gitnesse 0.12.6 → 1.0.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|