gitnesse 0.12.6 → 1.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +6 -0
- data/Rakefile +6 -11
- data/bin/.keep +0 -0
- data/bin/gitnesse +2 -32
- data/config/gitnesse.rb.example +2 -4
- data/gitnesse.gemspec +22 -21
- data/lib/gitnesse/cli/helpers/config_helpers.rb +13 -0
- data/lib/gitnesse/cli/helpers/feature_helpers.rb +26 -0
- data/lib/gitnesse/cli/helpers/wiki_helpers.rb +53 -0
- data/lib/gitnesse/cli/task/help.rb +42 -0
- data/lib/gitnesse/cli/task/info.rb +29 -0
- data/lib/gitnesse/cli/task/pull.rb +26 -0
- data/lib/gitnesse/cli/task/push.rb +101 -0
- data/lib/gitnesse/cli/task/run.rb +85 -0
- data/lib/gitnesse/cli/task.rb +67 -0
- data/lib/gitnesse/cli.rb +55 -0
- data/lib/gitnesse/config.rb +68 -0
- data/lib/gitnesse/config_loader.rb +36 -0
- data/lib/gitnesse/dependency_checker.rb +86 -0
- data/lib/gitnesse/dir_manager.rb +37 -0
- data/lib/gitnesse/feature.rb +63 -0
- data/lib/gitnesse/feature_extractor.rb +29 -0
- data/lib/gitnesse/feature_transform.rb +30 -0
- data/lib/gitnesse/hooks/gitnesse.rb +5 -0
- data/lib/gitnesse/hooks.rb +30 -33
- data/lib/gitnesse/railtie.rb +3 -1
- data/lib/gitnesse/rake/tasks.rake +11 -0
- data/lib/gitnesse/tasks.rb +7 -4
- data/lib/gitnesse/version.rb +1 -1
- data/lib/gitnesse/wiki/page.rb +103 -0
- data/lib/gitnesse/wiki.rb +80 -143
- data/lib/gitnesse.rb +10 -102
- data/spec/lib/cli/task/help_spec.rb +34 -0
- data/spec/lib/cli/task/info_spec.rb +22 -0
- data/spec/lib/cli/task/pull_spec.rb +24 -0
- data/spec/lib/cli/task/push_spec.rb +24 -0
- data/spec/lib/cli_spec.rb +13 -0
- data/spec/lib/config_loader_spec.rb +46 -0
- data/spec/lib/config_spec.rb +61 -0
- data/spec/lib/dependency_checker_spec.rb +193 -0
- data/spec/lib/dir_manager_spec.rb +46 -0
- data/spec/lib/feature_extractor_spec.rb +30 -0
- data/spec/lib/feature_spec.rb +53 -0
- data/spec/lib/feature_transform_spec.rb +25 -0
- data/spec/lib/hooks_spec.rb +40 -0
- data/spec/lib/version_spec.rb +9 -0
- data/spec/lib/wiki/page_spec.rb +68 -0
- data/spec/lib/wiki_spec.rb +34 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/support/cli.rb +20 -0
- data/spec/support/example_config/gitnesse.rb +4 -0
- data/{test/test_helper.rb → spec/support/example_features/addition.feature} +0 -16
- data/spec/support/example_features/division.feature +10 -0
- data/spec/support/example_wiki_pages/developer_can_sync_features_to_code.md +29 -0
- data/spec/support_helper.rb +79 -0
- metadata +103 -109
- data/README.md +0 -85
- data/features/step_definitions/gitnesse_steps.rb +0 -54
- data/features/support/env.rb +0 -65
- data/features/sync_wiki_features_to_code.feature +0 -29
- data/lib/gitnesse/configuration.rb +0 -54
- data/lib/gitnesse/dependencies.rb +0 -39
- data/lib/gitnesse/features.rb +0 -38
- data/lib/gitnesse/git_config.rb +0 -39
- data/lib/gitnesse/support/hook.rb +0 -11
- data/lib/gitnesse/tasks.rake +0 -34
- data/test/lib/gitnesse/build_page_content_test.rb +0 -89
- data/test/lib/gitnesse/commit_info_test.rb +0 -16
- data/test/lib/gitnesse/configuration_defaults_test.rb +0 -11
- data/test/lib/gitnesse/configuration_to_hash_test.rb +0 -25
- data/test/lib/gitnesse/custom_branch_test.rb +0 -24
- data/test/lib/gitnesse/dependencies_check_test.rb +0 -73
- data/test/lib/gitnesse/extract_features_test.rb +0 -44
- data/test/lib/gitnesse/gather_test.rb +0 -30
- data/test/lib/gitnesse/load_feature_files_into_wiki_test.rb +0 -34
- data/test/lib/gitnesse/read_git_config_test.rb +0 -33
- data/test/lib/gitnesse/strip_results_test.rb +0 -52
- data/test/lib/gitnesse/version_test.rb +0 -7
- data/test/lib/gitnesse/wiki_append_results_test.rb +0 -50
- data/test/lib/gitnesse/write_file_test.rb +0 -18
- data/test/wiki_test_helper.rb +0 -11
metadata
CHANGED
@@ -1,206 +1,200 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gitnesse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 1.0.0.beta2
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- www.hybridgroup.com
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-09-06 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: bundler
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: '
|
19
|
+
version: '1.3'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
|
-
- -
|
24
|
+
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '
|
26
|
+
version: '1.3'
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: git
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 2.
|
33
|
+
version: 1.2.6
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 2.
|
40
|
+
version: 1.2.6
|
46
41
|
- !ruby/object:Gem::Dependency
|
47
|
-
name:
|
42
|
+
name: rake
|
48
43
|
requirement: !ruby/object:Gem::Requirement
|
49
|
-
none: false
|
50
44
|
requirements:
|
51
|
-
- -
|
45
|
+
- - '>='
|
52
46
|
- !ruby/object:Gem::Version
|
53
47
|
version: '0'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
none: false
|
58
51
|
requirements:
|
59
|
-
- -
|
52
|
+
- - '>='
|
60
53
|
- !ruby/object:Gem::Version
|
61
54
|
version: '0'
|
62
55
|
- !ruby/object:Gem::Dependency
|
63
|
-
name:
|
56
|
+
name: rspec
|
64
57
|
requirement: !ruby/object:Gem::Requirement
|
65
|
-
none: false
|
66
58
|
requirements:
|
67
|
-
- -
|
59
|
+
- - ~>
|
68
60
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
61
|
+
version: 2.14.1
|
70
62
|
type: :development
|
71
63
|
prerelease: false
|
72
64
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
65
|
requirements:
|
75
|
-
- -
|
66
|
+
- - ~>
|
76
67
|
- !ruby/object:Gem::Version
|
77
|
-
version:
|
68
|
+
version: 2.14.1
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: cucumber
|
80
71
|
requirement: !ruby/object:Gem::Requirement
|
81
|
-
none: false
|
82
|
-
requirements:
|
83
|
-
- - ! '>='
|
84
|
-
- !ruby/object:Gem::Version
|
85
|
-
version: '0'
|
86
|
-
type: :development
|
87
|
-
prerelease: false
|
88
|
-
version_requirements: !ruby/object:Gem::Requirement
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ! '>='
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '0'
|
94
|
-
- !ruby/object:Gem::Dependency
|
95
|
-
name: rake
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
97
|
-
none: false
|
98
72
|
requirements:
|
99
|
-
- -
|
73
|
+
- - ~>
|
100
74
|
- !ruby/object:Gem::Version
|
101
|
-
version:
|
75
|
+
version: 1.3.4
|
102
76
|
type: :development
|
103
77
|
prerelease: false
|
104
78
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
-
none: false
|
106
79
|
requirements:
|
107
|
-
- -
|
80
|
+
- - ~>
|
108
81
|
- !ruby/object:Gem::Version
|
109
|
-
version:
|
110
|
-
description:
|
82
|
+
version: 1.3.4
|
83
|
+
description: |-
|
84
|
+
Gitnesse lets you sync Cucumber feature stories
|
85
|
+
through a Git-based wiki, and display current
|
86
|
+
scenario results on wiki pages
|
111
87
|
email:
|
112
88
|
- info@hybridgroup.com
|
113
89
|
executables:
|
90
|
+
- .keep
|
114
91
|
- gitnesse
|
115
92
|
extensions: []
|
116
93
|
extra_rdoc_files: []
|
117
94
|
files:
|
118
95
|
- .gitignore
|
96
|
+
- .travis.yml
|
119
97
|
- Gemfile
|
120
98
|
- LICENSE.txt
|
121
|
-
- README.md
|
122
99
|
- Rakefile
|
100
|
+
- bin/.keep
|
123
101
|
- bin/gitnesse
|
124
102
|
- config/gitnesse.rb.example
|
125
|
-
- features/step_definitions/gitnesse_steps.rb
|
126
|
-
- features/support/env.rb
|
127
|
-
- features/sync_wiki_features_to_code.feature
|
128
103
|
- gitnesse.gemspec
|
129
104
|
- lib/gitnesse.rb
|
130
|
-
- lib/gitnesse/
|
131
|
-
- lib/gitnesse/
|
132
|
-
- lib/gitnesse/
|
133
|
-
- lib/gitnesse/
|
105
|
+
- lib/gitnesse/cli.rb
|
106
|
+
- lib/gitnesse/cli/helpers/config_helpers.rb
|
107
|
+
- lib/gitnesse/cli/helpers/feature_helpers.rb
|
108
|
+
- lib/gitnesse/cli/helpers/wiki_helpers.rb
|
109
|
+
- lib/gitnesse/cli/task.rb
|
110
|
+
- lib/gitnesse/cli/task/help.rb
|
111
|
+
- lib/gitnesse/cli/task/info.rb
|
112
|
+
- lib/gitnesse/cli/task/pull.rb
|
113
|
+
- lib/gitnesse/cli/task/push.rb
|
114
|
+
- lib/gitnesse/cli/task/run.rb
|
115
|
+
- lib/gitnesse/config.rb
|
116
|
+
- lib/gitnesse/config_loader.rb
|
117
|
+
- lib/gitnesse/dependency_checker.rb
|
118
|
+
- lib/gitnesse/dir_manager.rb
|
119
|
+
- lib/gitnesse/feature.rb
|
120
|
+
- lib/gitnesse/feature_extractor.rb
|
121
|
+
- lib/gitnesse/feature_transform.rb
|
134
122
|
- lib/gitnesse/hooks.rb
|
123
|
+
- lib/gitnesse/hooks/gitnesse.rb
|
135
124
|
- lib/gitnesse/railtie.rb
|
136
|
-
- lib/gitnesse/
|
137
|
-
- lib/gitnesse/tasks.rake
|
125
|
+
- lib/gitnesse/rake/tasks.rake
|
138
126
|
- lib/gitnesse/tasks.rb
|
139
127
|
- lib/gitnesse/version.rb
|
140
128
|
- lib/gitnesse/wiki.rb
|
141
|
-
-
|
142
|
-
-
|
143
|
-
-
|
144
|
-
-
|
145
|
-
-
|
146
|
-
-
|
147
|
-
-
|
148
|
-
-
|
149
|
-
-
|
150
|
-
-
|
151
|
-
-
|
152
|
-
-
|
153
|
-
-
|
154
|
-
-
|
155
|
-
-
|
156
|
-
-
|
129
|
+
- lib/gitnesse/wiki/page.rb
|
130
|
+
- spec/lib/cli/task/help_spec.rb
|
131
|
+
- spec/lib/cli/task/info_spec.rb
|
132
|
+
- spec/lib/cli/task/pull_spec.rb
|
133
|
+
- spec/lib/cli/task/push_spec.rb
|
134
|
+
- spec/lib/cli_spec.rb
|
135
|
+
- spec/lib/config_loader_spec.rb
|
136
|
+
- spec/lib/config_spec.rb
|
137
|
+
- spec/lib/dependency_checker_spec.rb
|
138
|
+
- spec/lib/dir_manager_spec.rb
|
139
|
+
- spec/lib/feature_extractor_spec.rb
|
140
|
+
- spec/lib/feature_spec.rb
|
141
|
+
- spec/lib/feature_transform_spec.rb
|
142
|
+
- spec/lib/hooks_spec.rb
|
143
|
+
- spec/lib/version_spec.rb
|
144
|
+
- spec/lib/wiki/page_spec.rb
|
145
|
+
- spec/lib/wiki_spec.rb
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- spec/support/cli.rb
|
148
|
+
- spec/support/example_config/gitnesse.rb
|
149
|
+
- spec/support/example_features/addition.feature
|
150
|
+
- spec/support/example_features/division.feature
|
151
|
+
- spec/support/example_wiki_pages/developer_can_sync_features_to_code.md
|
152
|
+
- spec/support_helper.rb
|
157
153
|
homepage: https://github.com/hybridgroup/gitnesse
|
158
|
-
licenses:
|
154
|
+
licenses:
|
155
|
+
- MIT
|
156
|
+
metadata: {}
|
159
157
|
post_install_message:
|
160
158
|
rdoc_options: []
|
161
159
|
require_paths:
|
162
160
|
- lib
|
163
161
|
required_ruby_version: !ruby/object:Gem::Requirement
|
164
|
-
none: false
|
165
162
|
requirements:
|
166
|
-
- -
|
163
|
+
- - '>='
|
167
164
|
- !ruby/object:Gem::Version
|
168
165
|
version: '0'
|
169
|
-
segments:
|
170
|
-
- 0
|
171
|
-
hash: 3165279517982023743
|
172
166
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
167
|
requirements:
|
175
|
-
- -
|
168
|
+
- - '>'
|
176
169
|
- !ruby/object:Gem::Version
|
177
|
-
version:
|
178
|
-
segments:
|
179
|
-
- 0
|
180
|
-
hash: 3165279517982023743
|
170
|
+
version: 1.3.1
|
181
171
|
requirements: []
|
182
172
|
rubyforge_project:
|
183
|
-
rubygems_version:
|
173
|
+
rubygems_version: 2.0.3
|
184
174
|
signing_key:
|
185
|
-
specification_version:
|
186
|
-
summary:
|
175
|
+
specification_version: 4
|
176
|
+
summary: Sync your feature stories using a Git-based wiki!
|
187
177
|
test_files:
|
188
|
-
-
|
189
|
-
-
|
190
|
-
-
|
191
|
-
-
|
192
|
-
-
|
193
|
-
-
|
194
|
-
-
|
195
|
-
-
|
196
|
-
-
|
197
|
-
-
|
198
|
-
-
|
199
|
-
-
|
200
|
-
-
|
201
|
-
-
|
202
|
-
-
|
203
|
-
-
|
204
|
-
-
|
205
|
-
-
|
206
|
-
-
|
178
|
+
- spec/lib/cli/task/help_spec.rb
|
179
|
+
- spec/lib/cli/task/info_spec.rb
|
180
|
+
- spec/lib/cli/task/pull_spec.rb
|
181
|
+
- spec/lib/cli/task/push_spec.rb
|
182
|
+
- spec/lib/cli_spec.rb
|
183
|
+
- spec/lib/config_loader_spec.rb
|
184
|
+
- spec/lib/config_spec.rb
|
185
|
+
- spec/lib/dependency_checker_spec.rb
|
186
|
+
- spec/lib/dir_manager_spec.rb
|
187
|
+
- spec/lib/feature_extractor_spec.rb
|
188
|
+
- spec/lib/feature_spec.rb
|
189
|
+
- spec/lib/feature_transform_spec.rb
|
190
|
+
- spec/lib/hooks_spec.rb
|
191
|
+
- spec/lib/version_spec.rb
|
192
|
+
- spec/lib/wiki/page_spec.rb
|
193
|
+
- spec/lib/wiki_spec.rb
|
194
|
+
- spec/spec_helper.rb
|
195
|
+
- spec/support/cli.rb
|
196
|
+
- spec/support/example_config/gitnesse.rb
|
197
|
+
- spec/support/example_features/addition.feature
|
198
|
+
- spec/support/example_features/division.feature
|
199
|
+
- spec/support/example_wiki_pages/developer_can_sync_features_to_code.md
|
200
|
+
- spec/support_helper.rb
|
data/README.md
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
# Gitnesse
|
2
|
-
|
3
|
-
Gitnesse is an acceptance testing tool.
|
4
|
-
|
5
|
-
It enables a project to store Cucumber feature stories in a git-based wiki, test them against your code, and then update the wiki with the latest test results.
|
6
|
-
|
7
|
-
The advantage is, that the features are on a wiki, so non-programmers can see them, and edit using the wiki. Hence an awesome bi-directional testing flow between developers and non-developers on a team.
|
8
|
-
|
9
|
-
Conceptually influenced by Fitnesse http://fitnesse.org/ thank you Uncle Bob!
|
10
|
-
|
11
|
-
## Installation
|
12
|
-
|
13
|
-
Add this line to your application's Gemfile:
|
14
|
-
|
15
|
-
gem 'gitnesse'
|
16
|
-
|
17
|
-
And then execute:
|
18
|
-
|
19
|
-
$ bundle
|
20
|
-
|
21
|
-
Or install it yourself as:
|
22
|
-
|
23
|
-
$ gem install gitnesse
|
24
|
-
|
25
|
-
Create a `gitnesse.rb` file somewhere in your project, and add something like
|
26
|
-
the following to it:
|
27
|
-
|
28
|
-
Gitnesse.configure do |config|
|
29
|
-
config.repository_url = "git@github.com:hybridgroup/gitnesse-demo.wiki"
|
30
|
-
config.annotate_results = true
|
31
|
-
config.info = "Bob Martin's development laptop"
|
32
|
-
end
|
33
|
-
|
34
|
-
## Git Config
|
35
|
-
|
36
|
-
Gitnesse depends on two values being present in your `gitconfig`: `user.name`
|
37
|
-
and `user.email`. These will be used when annotating test results, and to
|
38
|
-
identify commits you make to the feature wiki. If Gitnesse complains that you
|
39
|
-
don't have these set, you can fix this by entering the following lines in your
|
40
|
-
terminal:
|
41
|
-
|
42
|
-
$ git config --add --global user.name <your_name>
|
43
|
-
$ git config --add --global user.email <your_email>
|
44
|
-
|
45
|
-
## rake tasks
|
46
|
-
|
47
|
-
$ rake gitnesse:pull
|
48
|
-
$ rake gitnesse:push
|
49
|
-
$ rake gitnesse:run
|
50
|
-
$ rake gitnesse:info
|
51
|
-
$ rake gitnesse:push_results
|
52
|
-
|
53
|
-
## Usage In Rails 3
|
54
|
-
|
55
|
-
For Rails 3 the rake tasks should automatically just appear, as long as you have added the gitnesse gem to your Gemfile.
|
56
|
-
|
57
|
-
There is an example application using Rails 3 located here: [https://github.com/hybridgroup/gitnesse-example-rails](https://github.com/hybridgroup/gitnesse-example-rails)
|
58
|
-
|
59
|
-
## Usage In Sinatra
|
60
|
-
|
61
|
-
To use gitnesse in a Sinatra application, simple add this line of code to your Rakefile:
|
62
|
-
|
63
|
-
require "gitnesse/tasks"
|
64
|
-
|
65
|
-
There is an example application using Sinatra located here: [https://github.com/hybridgroup/gitnesse-example-sinatra](https://github.com/hybridgroup/gitnesse-example-sinatra)
|
66
|
-
|
67
|
-
## Other Usage
|
68
|
-
|
69
|
-
Want to use plain old Gitnesse? There is an executable, if you're allergic to rake tasks:
|
70
|
-
|
71
|
-
$ gitnesse
|
72
|
-
|
73
|
-
|
74
|
-
## TODO
|
75
|
-
|
76
|
-
- pluggable feature runners, so can be used with Spinach, Cucumber-JS, or ?
|
77
|
-
- standalone server so end users to run tests and see live results, just like Fitnesse
|
78
|
-
|
79
|
-
## Contributing
|
80
|
-
|
81
|
-
1. Fork it
|
82
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
83
|
-
3. Commit your changes (`git commit -am 'Add some feature'`)
|
84
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
85
|
-
5. Create new Pull Request
|
@@ -1,54 +0,0 @@
|
|
1
|
-
Given /^there is a code repo with cucumber features defined$/ do
|
2
|
-
@repo_dir = File.join(Dir.home, ".gitnesse_repo")
|
3
|
-
end
|
4
|
-
|
5
|
-
Given /^there is a code repo without any cucumber features defined$/ do
|
6
|
-
@repo_dir = File.join(Dir.home, ".gitnesse_repo_no_features")
|
7
|
-
end
|
8
|
-
|
9
|
-
Given /^there is a git wiki with cucumber features defined$/ do
|
10
|
-
@features_dir = File.join(Dir.home, ".gitnesse_features")
|
11
|
-
|
12
|
-
config_file = File.join(@repo_dir, "gitnesse.rb")
|
13
|
-
config = File.read(config_file)
|
14
|
-
config.gsub!(/config\.repository_url.*$/, "config.repository_url = '#{@features_dir}'")
|
15
|
-
File.open(config_file, 'w') { |file| file.puts config }
|
16
|
-
end
|
17
|
-
|
18
|
-
Given /^there is a git wiki without any cucumber features defined$/ do
|
19
|
-
@features_dir = File.join(Dir.home, ".gitnesse_features_no_features")
|
20
|
-
|
21
|
-
config_file = File.join(@repo_dir, "gitnesse.rb")
|
22
|
-
config = File.read(config_file)
|
23
|
-
config.gsub!(/config\.repository_url.*$/, "config.repository_url = '#{@features_dir}'")
|
24
|
-
File.open(config_file, 'w') { |file| file.puts config }
|
25
|
-
end
|
26
|
-
|
27
|
-
When /^developer pulls feature stories from the wiki$/ do
|
28
|
-
Dir.chdir(@repo_dir) do
|
29
|
-
`bundle exec rake gitnesse:pull &> /dev/null`
|
30
|
-
assert_equal $?, 0
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
When /^developer pushes feature stories to the wiki$/ do
|
35
|
-
Dir.chdir(@repo_dir) do
|
36
|
-
`bundle exec rake gitnesse:push &> /dev/null`
|
37
|
-
assert_equal $?, 0
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
Then /^the feature stories within the code should match the wiki$/ do
|
42
|
-
assert_dir = File.join(Dir.home, ".gitnesse_features_for_assert")
|
43
|
-
|
44
|
-
`git clone #{@features_dir} #{assert_dir} &> /dev/null`
|
45
|
-
|
46
|
-
repo_features = Dir.glob("#{@repo_dir}/features/*.feature").map { |file| File.basename(file, ".feature") }
|
47
|
-
wiki_files = Dir.glob("#{assert_dir}/*.md").map { |file| File.basename(file, ".md") }
|
48
|
-
|
49
|
-
FileUtils.rm_rf(assert_dir)
|
50
|
-
|
51
|
-
repo_features.each do |feature|
|
52
|
-
assert(wiki_files.include?(feature) || wiki_files.include?("#{feature}.feature"))
|
53
|
-
end
|
54
|
-
end
|
data/features/support/env.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
require 'test/unit/assertions'
|
2
|
-
World(Test::Unit::Assertions)
|
3
|
-
|
4
|
-
puts " Setting up Gitnesse for testing..."
|
5
|
-
|
6
|
-
@features_dir = File.join(Dir.home, ".gitnesse_features")
|
7
|
-
@features_dir_no_features = File.join(Dir.home, ".gitnesse_features_no_features")
|
8
|
-
@repo_dir = File.join(Dir.home, ".gitnesse_repo")
|
9
|
-
@repo_dir_no_features = File.join(Dir.home, ".gitnesse_repo_no_features")
|
10
|
-
|
11
|
-
Dir.mkdir @features_dir
|
12
|
-
Dir.mkdir @repo_dir
|
13
|
-
Dir.mkdir @features_dir_no_features
|
14
|
-
Dir.mkdir @repo_dir_no_features
|
15
|
-
|
16
|
-
Dir.chdir(@features_dir) do
|
17
|
-
system('git clone --bare https://github.com/hybridgroup/gitnesse-demo.wiki.git . &> /dev/null')
|
18
|
-
if $? == 0
|
19
|
-
puts " Cloned demo features to #{@features_dir}."
|
20
|
-
else
|
21
|
-
abort " Failed to clone demo features to #{@features_dir}."
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
Dir.chdir(@features_dir_no_features) do
|
26
|
-
system('git init --bare &> /dev/null')
|
27
|
-
if $? == 0
|
28
|
-
puts " Created demo wiki without features in #{@features_dir_no_features}."
|
29
|
-
else
|
30
|
-
abort " Failed to create demo wiki without features in #{@features_dir_no_features}."
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
Dir.chdir(@repo_dir) do
|
35
|
-
system('git clone https://github.com/hybridgroup/gitnesse-example-sinatra.git . &> /dev/null')
|
36
|
-
if $? == 0
|
37
|
-
puts " Cloned demo repo to #{@repo_dir}."
|
38
|
-
else
|
39
|
-
abort " Failed to clone demo repo to #{@repo_dir}."
|
40
|
-
end
|
41
|
-
|
42
|
-
system('bundle install --path vendor/bundle &> /dev/null')
|
43
|
-
if $? == 0
|
44
|
-
puts " Installed gems for demo wiki."
|
45
|
-
else
|
46
|
-
abort " Failed to install gems for demo wiki."
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
Dir.chdir(@repo_dir_no_features) do
|
51
|
-
FileUtils.cp_r("#{@repo_dir}/.", @repo_dir_no_features)
|
52
|
-
Dir.glob("#{@repo_dir_no_features}/**/*.feature") do |file|
|
53
|
-
File.unlink(file)
|
54
|
-
end
|
55
|
-
puts " Created demo repo without features."
|
56
|
-
end
|
57
|
-
|
58
|
-
puts " Finished setting up Gitnesse for testing. Running features.", ""
|
59
|
-
|
60
|
-
at_exit do
|
61
|
-
FileUtils.rm_rf(@features_dir)
|
62
|
-
FileUtils.rm_rf(@repo_dir)
|
63
|
-
FileUtils.rm_rf(@features_dir_no_features)
|
64
|
-
FileUtils.rm_rf(@repo_dir_no_features)
|
65
|
-
end
|
@@ -1,29 +0,0 @@
|
|
1
|
-
Feature:
|
2
|
-
In order to build software that provides the best fitting solution to a user problem
|
3
|
-
As a developer
|
4
|
-
I want to be able to test feature stories in my code
|
5
|
-
And also store the feature stories in a wiki so users can easily view or edit them
|
6
|
-
|
7
|
-
Scenario: Features already exist in wiki but not in code
|
8
|
-
Given there is a code repo without any cucumber features defined
|
9
|
-
And there is a git wiki with cucumber features defined
|
10
|
-
When developer pulls feature stories from the wiki
|
11
|
-
Then the feature stories within the code should match the wiki
|
12
|
-
|
13
|
-
Scenario: Features already exist in code but not in wiki
|
14
|
-
Given there is a code repo with cucumber features defined
|
15
|
-
And there is a git wiki without any cucumber features defined
|
16
|
-
When developer pushes feature stories to the wiki
|
17
|
-
Then the feature stories within the code should match the wiki
|
18
|
-
|
19
|
-
Scenario: Features pushes features from code to existing wiki
|
20
|
-
Given there is a code repo with cucumber features defined
|
21
|
-
And there is a git wiki with cucumber features defined
|
22
|
-
When developer pushes feature stories to the wiki
|
23
|
-
Then the feature stories within the code should match the wiki
|
24
|
-
|
25
|
-
Scenario: Features pulls features from wiki to existing code
|
26
|
-
Given there is a code repo with cucumber features defined
|
27
|
-
And there is a git wiki with cucumber features defined
|
28
|
-
When developer pulls feature stories from the wiki
|
29
|
-
Then the feature stories within the code should match the wiki
|
@@ -1,54 +0,0 @@
|
|
1
|
-
module Gitnesse
|
2
|
-
class Configuration
|
3
|
-
attr_accessor :repository_url
|
4
|
-
attr_accessor :branch
|
5
|
-
attr_accessor :target_directory
|
6
|
-
attr_accessor :annotate_results
|
7
|
-
attr_accessor :info
|
8
|
-
|
9
|
-
class NoConfigFileError < StandardError ; end
|
10
|
-
class MultipleConfigFileError < StandardError ; end
|
11
|
-
|
12
|
-
def initialize
|
13
|
-
@branch = 'master'
|
14
|
-
@target_directory = File.join(Dir.pwd, 'features')
|
15
|
-
@annotate_results = false
|
16
|
-
@info = nil
|
17
|
-
end
|
18
|
-
|
19
|
-
# Public: Returns the current Gitnesse configuration as a Hash
|
20
|
-
#
|
21
|
-
# Returns a hash containing the current Gitnesse configuration
|
22
|
-
def to_hash
|
23
|
-
{ 'repository_url' => @repository_url,
|
24
|
-
'branch' => @branch,
|
25
|
-
'target_directory' => @target_directory }
|
26
|
-
end
|
27
|
-
|
28
|
-
def self.load_using_search
|
29
|
-
load(ENV['GITNESSE_CONFIG']) and return if ENV['GITNESSE_CONFIG']
|
30
|
-
|
31
|
-
possible_config_files = Dir.glob(File.join("**", "gitnesse.rb"))
|
32
|
-
|
33
|
-
files_with_config = possible_config_files.select do |file_name|
|
34
|
-
if FileUtils.compare_file(__FILE__, file_name)
|
35
|
-
false
|
36
|
-
elsif File.fnmatch("vendor/**/*.rb", file_name)
|
37
|
-
false
|
38
|
-
else
|
39
|
-
file_content = File.read(file_name)
|
40
|
-
file_content.match("Gitnesse.configure")
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
case files_with_config.length
|
45
|
-
when 0
|
46
|
-
raise NoConfigFileError, "Can't find a gitnesse.rb file with Gitnesse configuration."
|
47
|
-
when 1
|
48
|
-
load(File.absolute_path(files_with_config.first))
|
49
|
-
else
|
50
|
-
raise MultipleConfigFileError, "Several config files found: #{files_with_config.join(", ")}"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
module Gitnesse
|
2
|
-
class Dependencies
|
3
|
-
class NoGitError < StandardError ; end
|
4
|
-
class NoCucumberError < StandardError ; end
|
5
|
-
class NoRepositoryURLError < StandardError ; end
|
6
|
-
class NoAnnotationInfoError < StandardError ; end
|
7
|
-
|
8
|
-
# Checks Gitnesse's dependencies, and throws an error if one of them is
|
9
|
-
# missing.
|
10
|
-
def self.check
|
11
|
-
check_git
|
12
|
-
check_cucumber
|
13
|
-
check_repository_url
|
14
|
-
check_annotation_info
|
15
|
-
end
|
16
|
-
|
17
|
-
protected
|
18
|
-
|
19
|
-
def self.check_git
|
20
|
-
raise NoGitError, "git not found or not working." unless Kernel.system("git --version &> /dev/null")
|
21
|
-
end
|
22
|
-
|
23
|
-
def self.check_cucumber
|
24
|
-
raise NoCucumberError, "cucumber not found or not working." unless Kernel.system("cucumber --version &> /dev/null")
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.check_repository_url
|
28
|
-
raise NoRepositoryURLError, "You must select a repository_url to run Gitnesse." if Gitnesse.configuration.repository_url.nil?
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.check_annotation_info
|
32
|
-
if Gitnesse.configuration.annotate_results
|
33
|
-
if Gitnesse.configuration.info.nil?
|
34
|
-
raise NoAnnotationInfoError, "You must enter local information to annotate test results in the wiki"
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
data/lib/gitnesse/features.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
module Gitnesse
|
2
|
-
class Features
|
3
|
-
|
4
|
-
# Public: Writes a feature to disk, given the filename and the
|
5
|
-
# features.
|
6
|
-
#
|
7
|
-
# filename - the filename to use for the feature
|
8
|
-
# features - the features to write to disk
|
9
|
-
#
|
10
|
-
def self.write_file(filename, features)
|
11
|
-
File.open(filename, "w") do |file|
|
12
|
-
file.write(gather(features))
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
# Public: Gathers features for placing into files. Currently only supports
|
17
|
-
# one feature per page. Others are discarded
|
18
|
-
#
|
19
|
-
# page_features - the features
|
20
|
-
#
|
21
|
-
# Returns a string containing the
|
22
|
-
def self.gather(page_features)
|
23
|
-
return '' if page_features.nil? || page_features.empty?
|
24
|
-
|
25
|
-
features = ''
|
26
|
-
|
27
|
-
name, content = page_features.shift
|
28
|
-
puts " \e[32m\e[1mPulling Feature: \e[0m#{name}"
|
29
|
-
features += content
|
30
|
-
|
31
|
-
page_features.each do |name, feature|
|
32
|
-
puts " \e[33m\e[1mDiscarding Feature: \e[0m#{name}"
|
33
|
-
end
|
34
|
-
|
35
|
-
features
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|