cucumber 0.8.5 → 0.8.6
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.
- data/.rspec +1 -1
- data/LICENSE +1 -1
- data/Rakefile +5 -51
- data/bin/cucumber +7 -1
- data/cucumber.gemspec +463 -679
- data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/he/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +4 -7
- data/examples/i18n/ru/features/division.feature +2 -2
- data/examples/i18n/tr/features/step_definitons/hesap_makinesi_adimlari.rb +3 -3
- data/examples/sinatra/features/support/env.rb +2 -5
- data/examples/v8/features/fibonacci.feature +1 -1
- data/examples/watir/features/step_definitions/search_steps.rb +1 -1
- data/features/background.feature +284 -95
- data/features/custom_formatter.feature +3 -73
- data/features/json_formatter.feature +160 -245
- data/features/step_definitions/cucumber_steps.rb +7 -153
- data/features/support/env.rb +18 -140
- data/fixtures/junit/features/pending.feature +3 -1
- data/fixtures/self_test/features/support/env.rb +8 -0
- data/fixtures/tickets/features.html +1 -1
- data/gem_tasks/examples.rake +1 -1
- data/lib/cucumber.rb +12 -0
- data/lib/cucumber/ast.rb +1 -1
- data/lib/cucumber/ast/background.rb +21 -5
- data/lib/cucumber/ast/examples.rb +12 -4
- data/lib/cucumber/ast/feature.rb +13 -5
- data/lib/cucumber/ast/feature_element.rb +9 -4
- data/lib/cucumber/ast/outline_table.rb +4 -4
- data/lib/cucumber/ast/scenario.rb +7 -5
- data/lib/cucumber/ast/scenario_outline.rb +23 -15
- data/lib/cucumber/ast/step.rb +5 -0
- data/lib/cucumber/ast/step_invocation.rb +21 -15
- data/lib/cucumber/ast/table.rb +14 -8
- data/lib/cucumber/ast/tree_walker.rb +10 -48
- data/lib/cucumber/cli/configuration.rb +33 -8
- data/lib/cucumber/cli/main.rb +20 -35
- data/lib/cucumber/cli/options.rb +8 -7
- data/lib/cucumber/cli/profile_loader.rb +2 -0
- data/lib/cucumber/core_ext/proc.rb +2 -1
- data/lib/cucumber/feature_file.rb +47 -15
- data/lib/cucumber/formatter/ansicolor.rb +3 -5
- data/lib/cucumber/formatter/console.rb +27 -23
- data/lib/cucumber/formatter/cucumber.css +34 -17
- data/lib/cucumber/formatter/cucumber.sass +173 -182
- data/lib/cucumber/formatter/html.rb +46 -11
- data/lib/cucumber/formatter/io.rb +2 -4
- data/lib/cucumber/formatter/json.rb +15 -152
- data/lib/cucumber/formatter/json_pretty.rb +5 -6
- data/lib/cucumber/formatter/junit.rb +28 -22
- data/lib/cucumber/formatter/pdf.rb +6 -6
- data/lib/cucumber/formatter/pretty.rb +5 -5
- data/lib/cucumber/formatter/rerun.rb +22 -11
- data/lib/cucumber/formatter/unicode.rb +41 -20
- data/lib/cucumber/js_support/js_dsl.js +4 -4
- data/lib/cucumber/js_support/js_language.rb +9 -5
- data/lib/cucumber/js_support/js_snippets.rb +2 -2
- data/lib/cucumber/language_support.rb +2 -2
- data/lib/cucumber/parser/gherkin_builder.rb +35 -30
- data/lib/cucumber/platform.rb +8 -8
- data/lib/cucumber/py_support/py_language.rb +2 -2
- data/lib/cucumber/rake/task.rb +80 -31
- data/lib/cucumber/rb_support/rb_dsl.rb +1 -0
- data/lib/cucumber/rb_support/rb_language.rb +10 -8
- data/lib/cucumber/rb_support/rb_step_definition.rb +8 -0
- data/lib/cucumber/rb_support/rb_transform.rb +17 -0
- data/lib/cucumber/rb_support/rb_world.rb +26 -18
- data/lib/cucumber/rspec/doubles.rb +3 -3
- data/lib/cucumber/step_match.rb +6 -2
- data/lib/cucumber/step_mother.rb +6 -427
- data/lib/cucumber/wire_support/configuration.rb +4 -1
- data/lib/cucumber/wire_support/wire_language.rb +3 -10
- data/spec/cucumber/ast/background_spec.rb +68 -6
- data/spec/cucumber/ast/feature_factory.rb +5 -4
- data/spec/cucumber/ast/feature_spec.rb +4 -4
- data/spec/cucumber/ast/outline_table_spec.rb +1 -1
- data/spec/cucumber/ast/scenario_outline_spec.rb +15 -11
- data/spec/cucumber/ast/scenario_spec.rb +4 -4
- data/spec/cucumber/ast/step_spec.rb +3 -3
- data/spec/cucumber/ast/table_spec.rb +38 -2
- data/spec/cucumber/ast/tree_walker_spec.rb +2 -2
- data/spec/cucumber/broadcaster_spec.rb +1 -1
- data/spec/cucumber/cli/configuration_spec.rb +32 -6
- data/spec/cucumber/cli/drb_client_spec.rb +2 -3
- data/spec/cucumber/cli/main_spec.rb +43 -43
- data/spec/cucumber/cli/options_spec.rb +28 -1
- data/spec/cucumber/cli/profile_loader_spec.rb +1 -1
- data/spec/cucumber/core_ext/proc_spec.rb +1 -1
- data/spec/cucumber/formatter/ansicolor_spec.rb +1 -1
- data/spec/cucumber/formatter/duration_spec.rb +1 -1
- data/spec/cucumber/formatter/html_spec.rb +3 -5
- data/spec/cucumber/formatter/junit_spec.rb +16 -2
- data/spec/cucumber/formatter/progress_spec.rb +1 -1
- data/spec/cucumber/formatter/spec_helper.rb +11 -12
- data/spec/cucumber/rb_support/rb_language_spec.rb +241 -28
- data/spec/cucumber/rb_support/rb_step_definition_spec.rb +33 -28
- data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +1 -1
- data/spec/cucumber/step_match_spec.rb +11 -9
- data/spec/cucumber/wire_support/configuration_spec.rb +1 -1
- data/spec/cucumber/wire_support/connection_spec.rb +1 -1
- data/spec/cucumber/wire_support/wire_exception_spec.rb +1 -1
- data/spec/cucumber/wire_support/wire_language_spec.rb +1 -1
- data/spec/cucumber/wire_support/wire_packet_spec.rb +1 -1
- data/spec/cucumber/wire_support/wire_step_definition_spec.rb +1 -1
- data/spec/cucumber/world/pending_spec.rb +2 -2
- data/spec/spec_helper.rb +13 -20
- metadata +11 -222
- data/.gitignore +0 -20
- data/Caliper.yml +0 -4
- data/History.txt +0 -1552
- data/README.rdoc +0 -26
- data/VERSION.yml +0 -5
- data/examples/i18n/ro/features/suma.feature +0 -11
- data/features/announce.feature +0 -164
- data/features/around_hooks.feature +0 -232
- data/features/bug_371.feature +0 -32
- data/features/bug_464.feature +0 -16
- data/features/bug_475.feature +0 -42
- data/features/bug_585_tab_indentation.feature +0 -22
- data/features/bug_600.feature +0 -67
- data/features/call_steps_from_stepdefs.feature +0 -154
- data/features/cucumber_cli.feature +0 -591
- data/features/cucumber_cli_outlines.feature +0 -117
- data/features/default_snippets.feature +0 -42
- data/features/diffing.feature +0 -25
- data/features/drb_server_integration.feature +0 -174
- data/features/exception_in_after_block.feature +0 -127
- data/features/exception_in_after_step_block.feature +0 -104
- data/features/exception_in_before_block.feature +0 -98
- data/features/exclude_files.feature +0 -20
- data/features/expand.feature +0 -60
- data/features/html_formatter.feature +0 -8
- data/features/html_formatter/a.html +0 -582
- data/features/junit_formatter.feature +0 -88
- data/features/language_from_header.feature +0 -30
- data/features/language_help.feature +0 -78
- data/features/listener_debugger_formatter.feature +0 -42
- data/features/multiline_names.feature +0 -44
- data/features/negative_tagged_hooks.feature +0 -60
- data/features/post_configuration_hook.feature +0 -37
- data/features/profiles.feature +0 -126
- data/features/rake_task.feature +0 -152
- data/features/report_called_undefined_steps.feature +0 -34
- data/features/rerun_formatter.feature +0 -45
- data/features/simplest.feature +0 -11
- data/features/snippet.feature +0 -23
- data/features/snippets_when_using_star_keyword.feature +0 -36
- data/features/step_definitions/extra_steps.rb +0 -2
- data/features/step_definitions/simplest_steps.rb +0 -3
- data/features/step_definitions/wire_steps.rb +0 -32
- data/features/support/env.rb.simplest +0 -7
- data/features/support/fake_wire_server.rb +0 -77
- data/features/table_diffing.feature +0 -45
- data/features/table_mapping.feature +0 -34
- data/features/tag_logic.feature +0 -258
- data/features/transform.feature +0 -245
- data/features/unicode_table.feature +0 -35
- data/features/usage_and_stepdefs_formatter.feature +0 -169
- data/features/wire_protocol.feature +0 -332
- data/features/wire_protocol_table_diffing.feature +0 -119
- data/features/wire_protocol_tags.feature +0 -87
- data/features/wire_protocol_timeouts.feature +0 -63
- data/features/work_in_progress.feature +0 -156
- data/fixtures/json/features/pystring.feature +0 -8
- data/fixtures/self_test/features/background/background_tagged_before_on_outline.feature +0 -12
- data/fixtures/self_test/features/background/background_with_name.feature +0 -7
- data/fixtures/self_test/features/background/failing_background.feature +0 -12
- data/fixtures/self_test/features/background/failing_background_after_success.feature +0 -11
- data/fixtures/self_test/features/background/multiline_args_background.feature +0 -32
- data/fixtures/self_test/features/background/passing_background.feature +0 -10
- data/fixtures/self_test/features/background/pending_background.feature +0 -10
- data/fixtures/self_test/features/background/scenario_outline_failing_background.feature +0 -16
- data/fixtures/self_test/features/background/scenario_outline_passing_background.feature +0 -16
- data/gem_tasks/features.rake +0 -14
- data/gem_tasks/sdoc.rake +0 -12
- data/lib/cucumber/ast/py_string.rb +0 -80
- data/lib/cucumber/formatter/color_io.rb +0 -23
- data/lib/cucumber/formatter/tag_cloud.rb +0 -35
- data/spec/cucumber/ast/py_string_spec.rb +0 -40
- data/spec/cucumber/formatter/color_io_spec.rb +0 -29
- data/spec/cucumber/step_mother_spec.rb +0 -302
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
Feature: Table mapping
|
|
2
|
-
Scenario: Mapping table shouldn't change output
|
|
3
|
-
Given a standard Cucumber project directory structure
|
|
4
|
-
And a file named "features/f.feature" with:
|
|
5
|
-
"""
|
|
6
|
-
Feature: F
|
|
7
|
-
Scenario: S
|
|
8
|
-
Given a table:
|
|
9
|
-
| who |
|
|
10
|
-
| aslak |
|
|
11
|
-
"""
|
|
12
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
13
|
-
"""
|
|
14
|
-
Given(/a table:/) { |table| table.map_headers!(/who/i => 'Who')
|
|
15
|
-
table.map_column!('Who') { |who| "Cuke" }
|
|
16
|
-
table.hashes[0]['Who'] = "Joe"
|
|
17
|
-
table.hashes.should == [{"Who"=>"Joe"}]
|
|
18
|
-
}
|
|
19
|
-
"""
|
|
20
|
-
When I run cucumber features/f.feature
|
|
21
|
-
Then STDERR should be empty
|
|
22
|
-
And it should pass with
|
|
23
|
-
"""
|
|
24
|
-
Feature: F
|
|
25
|
-
|
|
26
|
-
Scenario: S # features/f.feature:2
|
|
27
|
-
Given a table: # features/step_definitions/steps.rb:1
|
|
28
|
-
| who |
|
|
29
|
-
| aslak |
|
|
30
|
-
|
|
31
|
-
1 scenario (1 passed)
|
|
32
|
-
1 step (1 passed)
|
|
33
|
-
|
|
34
|
-
"""
|
data/features/tag_logic.feature
DELETED
|
@@ -1,258 +0,0 @@
|
|
|
1
|
-
Feature: Tag logic
|
|
2
|
-
In order to conveniently run subsets of features
|
|
3
|
-
As a Cuker
|
|
4
|
-
I want to select features using logical AND/OR of tags
|
|
5
|
-
|
|
6
|
-
Background:
|
|
7
|
-
Given a standard Cucumber project directory structure
|
|
8
|
-
And a file named "features/tagulicious.feature" with:
|
|
9
|
-
"""
|
|
10
|
-
Feature: Sample
|
|
11
|
-
|
|
12
|
-
@one @three
|
|
13
|
-
Scenario: Example
|
|
14
|
-
Given passing
|
|
15
|
-
|
|
16
|
-
@one
|
|
17
|
-
Scenario: Another Example
|
|
18
|
-
Given passing
|
|
19
|
-
|
|
20
|
-
@three
|
|
21
|
-
Scenario: Yet another Example
|
|
22
|
-
Given passing
|
|
23
|
-
|
|
24
|
-
@ignore
|
|
25
|
-
Scenario: And yet another Example
|
|
26
|
-
"""
|
|
27
|
-
|
|
28
|
-
Scenario: ANDing tags
|
|
29
|
-
When I run cucumber -q -t @one -t @three features/tagulicious.feature
|
|
30
|
-
Then it should pass
|
|
31
|
-
And the output should contain
|
|
32
|
-
"""
|
|
33
|
-
Feature: Sample
|
|
34
|
-
|
|
35
|
-
@one @three
|
|
36
|
-
Scenario: Example
|
|
37
|
-
Given passing
|
|
38
|
-
|
|
39
|
-
1 scenario (1 undefined)
|
|
40
|
-
1 step (1 undefined)
|
|
41
|
-
|
|
42
|
-
"""
|
|
43
|
-
|
|
44
|
-
Scenario: ORing tags
|
|
45
|
-
When I run cucumber -q -t @one,@three features/tagulicious.feature
|
|
46
|
-
Then it should pass
|
|
47
|
-
And the output should contain
|
|
48
|
-
"""
|
|
49
|
-
Feature: Sample
|
|
50
|
-
|
|
51
|
-
@one @three
|
|
52
|
-
Scenario: Example
|
|
53
|
-
Given passing
|
|
54
|
-
|
|
55
|
-
@one
|
|
56
|
-
Scenario: Another Example
|
|
57
|
-
Given passing
|
|
58
|
-
|
|
59
|
-
@three
|
|
60
|
-
Scenario: Yet another Example
|
|
61
|
-
Given passing
|
|
62
|
-
|
|
63
|
-
3 scenarios (3 undefined)
|
|
64
|
-
3 steps (3 undefined)
|
|
65
|
-
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
Scenario: Before hooks ORing
|
|
69
|
-
Given a file named "features/support/hooks.rb" with:
|
|
70
|
-
"""
|
|
71
|
-
Before('@one,@three') do
|
|
72
|
-
raise 'boom'
|
|
73
|
-
end
|
|
74
|
-
"""
|
|
75
|
-
When I run cucumber -q features/tagulicious.feature
|
|
76
|
-
Then it should fail with
|
|
77
|
-
"""
|
|
78
|
-
Feature: Sample
|
|
79
|
-
|
|
80
|
-
@one @three
|
|
81
|
-
Scenario: Example
|
|
82
|
-
boom (RuntimeError)
|
|
83
|
-
./features/support/hooks.rb:2:in `Before'
|
|
84
|
-
Given passing
|
|
85
|
-
|
|
86
|
-
@one
|
|
87
|
-
Scenario: Another Example
|
|
88
|
-
boom (RuntimeError)
|
|
89
|
-
./features/support/hooks.rb:2:in `Before'
|
|
90
|
-
Given passing
|
|
91
|
-
|
|
92
|
-
@three
|
|
93
|
-
Scenario: Yet another Example
|
|
94
|
-
boom (RuntimeError)
|
|
95
|
-
./features/support/hooks.rb:2:in `Before'
|
|
96
|
-
Given passing
|
|
97
|
-
|
|
98
|
-
@ignore
|
|
99
|
-
Scenario: And yet another Example
|
|
100
|
-
|
|
101
|
-
Failing Scenarios:
|
|
102
|
-
cucumber features/tagulicious.feature:4 # Scenario: Example
|
|
103
|
-
cucumber features/tagulicious.feature:8 # Scenario: Another Example
|
|
104
|
-
cucumber features/tagulicious.feature:12 # Scenario: Yet another Example
|
|
105
|
-
|
|
106
|
-
4 scenarios (3 failed, 1 passed)
|
|
107
|
-
3 steps (3 undefined)
|
|
108
|
-
|
|
109
|
-
"""
|
|
110
|
-
|
|
111
|
-
Scenario: Before hooks ANDing
|
|
112
|
-
Given a file named "features/support/hooks.rb" with:
|
|
113
|
-
"""
|
|
114
|
-
Before('@one','@three') do
|
|
115
|
-
raise 'boom'
|
|
116
|
-
end
|
|
117
|
-
"""
|
|
118
|
-
When I run cucumber -q features/tagulicious.feature
|
|
119
|
-
Then it should fail with
|
|
120
|
-
"""
|
|
121
|
-
Feature: Sample
|
|
122
|
-
|
|
123
|
-
@one @three
|
|
124
|
-
Scenario: Example
|
|
125
|
-
boom (RuntimeError)
|
|
126
|
-
./features/support/hooks.rb:2:in `Before'
|
|
127
|
-
Given passing
|
|
128
|
-
|
|
129
|
-
@one
|
|
130
|
-
Scenario: Another Example
|
|
131
|
-
Given passing
|
|
132
|
-
|
|
133
|
-
@three
|
|
134
|
-
Scenario: Yet another Example
|
|
135
|
-
Given passing
|
|
136
|
-
|
|
137
|
-
@ignore
|
|
138
|
-
Scenario: And yet another Example
|
|
139
|
-
|
|
140
|
-
Failing Scenarios:
|
|
141
|
-
cucumber features/tagulicious.feature:4 # Scenario: Example
|
|
142
|
-
|
|
143
|
-
4 scenarios (1 failed, 2 undefined, 1 passed)
|
|
144
|
-
3 steps (3 undefined)
|
|
145
|
-
|
|
146
|
-
"""
|
|
147
|
-
|
|
148
|
-
Scenario: Before hooks ANDing with a bad hook matching nothing
|
|
149
|
-
Given a file named "features/support/hooks.rb" with:
|
|
150
|
-
"""
|
|
151
|
-
Before('@one','@notused') do
|
|
152
|
-
raise 'boom'
|
|
153
|
-
end
|
|
154
|
-
"""
|
|
155
|
-
When I run cucumber -q features/tagulicious.feature
|
|
156
|
-
Then it should pass with
|
|
157
|
-
"""
|
|
158
|
-
Feature: Sample
|
|
159
|
-
|
|
160
|
-
@one @three
|
|
161
|
-
Scenario: Example
|
|
162
|
-
Given passing
|
|
163
|
-
|
|
164
|
-
@one
|
|
165
|
-
Scenario: Another Example
|
|
166
|
-
Given passing
|
|
167
|
-
|
|
168
|
-
@three
|
|
169
|
-
Scenario: Yet another Example
|
|
170
|
-
Given passing
|
|
171
|
-
|
|
172
|
-
@ignore
|
|
173
|
-
Scenario: And yet another Example
|
|
174
|
-
|
|
175
|
-
4 scenarios (3 undefined, 1 passed)
|
|
176
|
-
3 steps (3 undefined)
|
|
177
|
-
|
|
178
|
-
"""
|
|
179
|
-
|
|
180
|
-
Scenario: After hooks ORing
|
|
181
|
-
Given a file named "features/support/hooks.rb" with:
|
|
182
|
-
"""
|
|
183
|
-
After('@one,@three') do
|
|
184
|
-
raise 'boom'
|
|
185
|
-
end
|
|
186
|
-
"""
|
|
187
|
-
When I run cucumber -q features/tagulicious.feature
|
|
188
|
-
Then it should fail with
|
|
189
|
-
"""
|
|
190
|
-
Feature: Sample
|
|
191
|
-
|
|
192
|
-
@one @three
|
|
193
|
-
Scenario: Example
|
|
194
|
-
Given passing
|
|
195
|
-
boom (RuntimeError)
|
|
196
|
-
./features/support/hooks.rb:2:in `After'
|
|
197
|
-
|
|
198
|
-
@one
|
|
199
|
-
Scenario: Another Example
|
|
200
|
-
Given passing
|
|
201
|
-
boom (RuntimeError)
|
|
202
|
-
./features/support/hooks.rb:2:in `After'
|
|
203
|
-
|
|
204
|
-
@three
|
|
205
|
-
Scenario: Yet another Example
|
|
206
|
-
Given passing
|
|
207
|
-
boom (RuntimeError)
|
|
208
|
-
./features/support/hooks.rb:2:in `After'
|
|
209
|
-
|
|
210
|
-
@ignore
|
|
211
|
-
Scenario: And yet another Example
|
|
212
|
-
|
|
213
|
-
Failing Scenarios:
|
|
214
|
-
cucumber features/tagulicious.feature:4 # Scenario: Example
|
|
215
|
-
cucumber features/tagulicious.feature:8 # Scenario: Another Example
|
|
216
|
-
cucumber features/tagulicious.feature:12 # Scenario: Yet another Example
|
|
217
|
-
|
|
218
|
-
4 scenarios (3 failed, 1 passed)
|
|
219
|
-
3 steps (3 undefined)
|
|
220
|
-
|
|
221
|
-
"""
|
|
222
|
-
|
|
223
|
-
Scenario: After hooks ANDing
|
|
224
|
-
Given a file named "features/support/hooks.rb" with:
|
|
225
|
-
"""
|
|
226
|
-
After('@one','@three') do
|
|
227
|
-
raise 'boom'
|
|
228
|
-
end
|
|
229
|
-
"""
|
|
230
|
-
When I run cucumber -q features/tagulicious.feature
|
|
231
|
-
Then it should fail with
|
|
232
|
-
"""
|
|
233
|
-
Feature: Sample
|
|
234
|
-
|
|
235
|
-
@one @three
|
|
236
|
-
Scenario: Example
|
|
237
|
-
Given passing
|
|
238
|
-
boom (RuntimeError)
|
|
239
|
-
./features/support/hooks.rb:2:in `After'
|
|
240
|
-
|
|
241
|
-
@one
|
|
242
|
-
Scenario: Another Example
|
|
243
|
-
Given passing
|
|
244
|
-
|
|
245
|
-
@three
|
|
246
|
-
Scenario: Yet another Example
|
|
247
|
-
Given passing
|
|
248
|
-
|
|
249
|
-
@ignore
|
|
250
|
-
Scenario: And yet another Example
|
|
251
|
-
|
|
252
|
-
Failing Scenarios:
|
|
253
|
-
cucumber features/tagulicious.feature:4 # Scenario: Example
|
|
254
|
-
|
|
255
|
-
4 scenarios (1 failed, 2 undefined, 1 passed)
|
|
256
|
-
3 steps (3 undefined)
|
|
257
|
-
|
|
258
|
-
"""
|
data/features/transform.feature
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
Feature: transform
|
|
2
|
-
In order to maintain modularity within step definitions
|
|
3
|
-
As a step definition editor
|
|
4
|
-
I want to register a regex to capture and tranform step definition arguments.
|
|
5
|
-
|
|
6
|
-
Background:
|
|
7
|
-
Given a standard Cucumber project directory structure
|
|
8
|
-
And a file named "features/step_definitions/steps.rb" with:
|
|
9
|
-
"""
|
|
10
|
-
Then /^I should transform ('\d+' to an Integer)$/ do |integer|
|
|
11
|
-
integer.should be_kind_of(Integer)
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
Then /^I should transform ('\w+' to a Symbol)$/ do |symbol|
|
|
15
|
-
symbol.should be_kind_of(Symbol)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
Then /^I should transform ('\d+' to a Float)$/ do |float|
|
|
19
|
-
float.should be_kind_of(Float)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
Then /^I should transform ('\w+' to an Array)$/ do |array|
|
|
23
|
-
array.should be_kind_of(Array)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
Then /^I should transform ('\w+' to Nil)$/ do |string|
|
|
27
|
-
string.should be_nil
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
Then /^I should not transform ('\d+') to an Integer$/ do |string|
|
|
31
|
-
string.should be_kind_of(String)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
Then /^I should transform ((?:nothing|'\d+') to an optional Integer)$/ do |integer|
|
|
35
|
-
integer.should be_nil
|
|
36
|
-
end
|
|
37
|
-
"""
|
|
38
|
-
And a file named "features/support/env.rb" with:
|
|
39
|
-
"""
|
|
40
|
-
Transform /^'\d+' to an Integer$/ do |step_arg|
|
|
41
|
-
/'(\d+)' to an Integer/.match(step_arg).captures[0].to_i
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
Transform /^(?:nothing|'(\d+)') to an optional Integer$/ do |str|
|
|
45
|
-
str ? str.to_i : nil
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
Transform /^'(\d+)' to a Float$/ do |integer_string|
|
|
49
|
-
Transform("'#{integer_string}' to an Integer").to_f
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
Transform(/^('\w+') to Nil$/) {|str| nil }
|
|
53
|
-
|
|
54
|
-
Transform(/^('\w+') to a Symbol$/) {|str| str.to_sym }
|
|
55
|
-
|
|
56
|
-
module MyHelpers
|
|
57
|
-
def fetch_array
|
|
58
|
-
@array
|
|
59
|
-
end
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
World(MyHelpers)
|
|
63
|
-
|
|
64
|
-
Before do
|
|
65
|
-
@array = []
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
Transform(/^('\w+') to an Array$/) {|str| fetch_array }
|
|
69
|
-
"""
|
|
70
|
-
|
|
71
|
-
Scenario: run a specific scenario with a registered transform
|
|
72
|
-
Given a file named "features/transform_sample.feature" with:
|
|
73
|
-
"""
|
|
74
|
-
Feature: Step argument transformations
|
|
75
|
-
|
|
76
|
-
Scenario: transform with matches
|
|
77
|
-
Then I should transform '10' to an Integer
|
|
78
|
-
|
|
79
|
-
Scenario: transform with matches that capture
|
|
80
|
-
Then I should transform 'abc' to a Symbol
|
|
81
|
-
|
|
82
|
-
Scenario: transform with matches that reuse transforms
|
|
83
|
-
Then I should transform '10' to a Float
|
|
84
|
-
|
|
85
|
-
Scenario: transform with matches that use current world
|
|
86
|
-
Then I should transform 'abc' to an Array
|
|
87
|
-
|
|
88
|
-
Scenario: transform with matches that return nil
|
|
89
|
-
Then I should transform 'nil' to Nil
|
|
90
|
-
|
|
91
|
-
Scenario: transform without matches
|
|
92
|
-
Then I should not transform '10' to an Integer
|
|
93
|
-
|
|
94
|
-
Scenario: transform with optional arguments not given
|
|
95
|
-
Then I should transform nothing to an optional Integer
|
|
96
|
-
"""
|
|
97
|
-
When I run cucumber --backtrace -s features
|
|
98
|
-
Then it should pass with
|
|
99
|
-
"""
|
|
100
|
-
Feature: Step argument transformations
|
|
101
|
-
|
|
102
|
-
Scenario: transform with matches
|
|
103
|
-
Then I should transform '10' to an Integer
|
|
104
|
-
|
|
105
|
-
Scenario: transform with matches that capture
|
|
106
|
-
Then I should transform 'abc' to a Symbol
|
|
107
|
-
|
|
108
|
-
Scenario: transform with matches that reuse transforms
|
|
109
|
-
Then I should transform '10' to a Float
|
|
110
|
-
|
|
111
|
-
Scenario: transform with matches that use current world
|
|
112
|
-
Then I should transform 'abc' to an Array
|
|
113
|
-
|
|
114
|
-
Scenario: transform with matches that return nil
|
|
115
|
-
Then I should transform 'nil' to Nil
|
|
116
|
-
|
|
117
|
-
Scenario: transform without matches
|
|
118
|
-
Then I should not transform '10' to an Integer
|
|
119
|
-
|
|
120
|
-
Scenario: transform with optional arguments not given
|
|
121
|
-
Then I should transform nothing to an optional Integer
|
|
122
|
-
|
|
123
|
-
7 scenarios (7 passed)
|
|
124
|
-
7 steps (7 passed)
|
|
125
|
-
|
|
126
|
-
"""
|
|
127
|
-
|
|
128
|
-
Scenario: run a table scenario with an unrelated registered transform
|
|
129
|
-
Given a file named "features/transform_sample.feature" with:
|
|
130
|
-
"""
|
|
131
|
-
Feature: Step argument transformations
|
|
132
|
-
|
|
133
|
-
Scenario: A table
|
|
134
|
-
Then I should check the following table:
|
|
135
|
-
| letter | letter_plus_a |
|
|
136
|
-
| r | ra |
|
|
137
|
-
| m | ma |
|
|
138
|
-
| p | pa |
|
|
139
|
-
"""
|
|
140
|
-
And a file named "features/support/table.rb" with:
|
|
141
|
-
"""
|
|
142
|
-
Transform /^table:number,number_plus_a$/ do |table|
|
|
143
|
-
:not_what_you_were_expecting
|
|
144
|
-
end
|
|
145
|
-
|
|
146
|
-
Then "I should check the following table:" do |table|
|
|
147
|
-
table.hashes.each do |hash|
|
|
148
|
-
hash['letter_plus_a'].should == (hash['letter'] + 'a')
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
"""
|
|
152
|
-
When I run cucumber -s features
|
|
153
|
-
Then it should pass with
|
|
154
|
-
"""
|
|
155
|
-
Feature: Step argument transformations
|
|
156
|
-
|
|
157
|
-
Scenario: A table
|
|
158
|
-
Then I should check the following table:
|
|
159
|
-
| letter | letter_plus_a |
|
|
160
|
-
| r | ra |
|
|
161
|
-
| m | ma |
|
|
162
|
-
| p | pa |
|
|
163
|
-
|
|
164
|
-
1 scenario (1 passed)
|
|
165
|
-
1 step (1 passed)
|
|
166
|
-
|
|
167
|
-
"""
|
|
168
|
-
|
|
169
|
-
Scenario: run a table scenario with an related registered transform not using table
|
|
170
|
-
Given a file named "features/transform_sample.feature" with:
|
|
171
|
-
"""
|
|
172
|
-
Feature: Step argument transformations
|
|
173
|
-
|
|
174
|
-
Scenario: A table
|
|
175
|
-
Then I should check the following table:
|
|
176
|
-
| letter | letter_plus_a |
|
|
177
|
-
| r | ra |
|
|
178
|
-
| m | ma |
|
|
179
|
-
| p | pa |
|
|
180
|
-
"""
|
|
181
|
-
And a file named "features/support/table.rb" with:
|
|
182
|
-
"""
|
|
183
|
-
Transform /^table:letter,letter_plus_a$/ do |table|
|
|
184
|
-
1
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
Then "I should check the following table:" do |columns|
|
|
188
|
-
columns.should == 1
|
|
189
|
-
end
|
|
190
|
-
"""
|
|
191
|
-
When I run cucumber -s features
|
|
192
|
-
Then it should pass with
|
|
193
|
-
"""
|
|
194
|
-
Feature: Step argument transformations
|
|
195
|
-
|
|
196
|
-
Scenario: A table
|
|
197
|
-
Then I should check the following table:
|
|
198
|
-
| letter | letter_plus_a |
|
|
199
|
-
| r | ra |
|
|
200
|
-
| m | ma |
|
|
201
|
-
| p | pa |
|
|
202
|
-
|
|
203
|
-
1 scenario (1 passed)
|
|
204
|
-
1 step (1 passed)
|
|
205
|
-
|
|
206
|
-
"""
|
|
207
|
-
|
|
208
|
-
Scenario: run a table scenario with an related registered transform using table
|
|
209
|
-
Given a file named "features/transform_sample.feature" with:
|
|
210
|
-
"""
|
|
211
|
-
Feature: Step argument transformations
|
|
212
|
-
|
|
213
|
-
Scenario: A table
|
|
214
|
-
Then I should check the following table:
|
|
215
|
-
| letter | letter_plus_a |
|
|
216
|
-
| r | ra |
|
|
217
|
-
| m | ma |
|
|
218
|
-
| p | pa |
|
|
219
|
-
"""
|
|
220
|
-
And a file named "features/support/table.rb" with:
|
|
221
|
-
"""
|
|
222
|
-
Transform /^table:letter,letter_plus_a$/ do |table|
|
|
223
|
-
table.rows.map { |row| row.join(',') }
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
Then "I should check the following table:" do |rows_in_table|
|
|
227
|
-
rows_in_table.should == ['r,ra','m,ma','p,pa']
|
|
228
|
-
end
|
|
229
|
-
"""
|
|
230
|
-
When I run cucumber -b -s features
|
|
231
|
-
Then it should pass with
|
|
232
|
-
"""
|
|
233
|
-
Feature: Step argument transformations
|
|
234
|
-
|
|
235
|
-
Scenario: A table
|
|
236
|
-
Then I should check the following table:
|
|
237
|
-
| letter | letter_plus_a |
|
|
238
|
-
| r | ra |
|
|
239
|
-
| m | ma |
|
|
240
|
-
| p | pa |
|
|
241
|
-
|
|
242
|
-
1 scenario (1 passed)
|
|
243
|
-
1 step (1 passed)
|
|
244
|
-
|
|
245
|
-
"""
|