cucumber 0.3.101 → 0.3.102
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/History.txt +31 -2
- data/Manifest.txt +7 -4
- data/config/hoe.rb +2 -2
- data/examples/pure_java/README.textile +2 -2
- data/examples/self_test/features/step_definitions/sample_steps.rb +0 -12
- data/examples/self_test/features/support/env.rb +0 -6
- data/features/cucumber_cli.feature +11 -24
- data/features/custom_formatter.feature +38 -3
- data/features/default_snippets.feature +42 -0
- data/features/html_formatter/a.html +1 -1
- data/features/negative_tagged_hooks.feature +61 -0
- data/features/step_definitions/cucumber_steps.rb +1 -1
- data/features/support/env.rb +1 -1
- data/features/transform.feature +88 -12
- data/features/usage.feature +0 -6
- data/lib/cucumber/ast/feature.rb +4 -0
- data/lib/cucumber/ast/feature_element.rb +49 -42
- data/lib/cucumber/ast/step_invocation.rb +1 -1
- data/lib/cucumber/ast/tags.rb +25 -3
- data/lib/cucumber/cli/drb_client.rb +7 -1
- data/lib/cucumber/cli/main.rb +5 -3
- data/lib/cucumber/cli/options.rb +15 -24
- data/lib/cucumber/constantize.rb +8 -2
- data/lib/cucumber/core_ext/instance_exec.rb +2 -1
- data/lib/cucumber/core_ext/string.rb +12 -22
- data/lib/cucumber/filter.rb +2 -12
- data/lib/cucumber/formatter/console.rb +21 -21
- data/lib/cucumber/formatter/html.rb +1 -1
- data/lib/cucumber/formatter/pdf.rb +1 -1
- data/lib/cucumber/formatter/pretty.rb +1 -1
- data/lib/cucumber/language_support/language_methods.rb +19 -2
- data/lib/cucumber/language_support/step_definition_methods.rb +2 -25
- data/lib/cucumber/parser/feature.rb +13 -50
- data/lib/cucumber/parser/feature.tt +13 -47
- data/lib/cucumber/parser/natural_language.rb +1 -1
- data/lib/cucumber/rails/action_controller.rb +33 -0
- data/lib/cucumber/rails/active_record.rb +27 -0
- data/lib/cucumber/rails/rspec.rb +1 -1
- data/lib/cucumber/rails/test_unit.rb +9 -0
- data/lib/cucumber/rails/world.rb +7 -78
- data/lib/cucumber/rb_support/rb_dsl.rb +6 -4
- data/lib/cucumber/rb_support/rb_group.rb +11 -0
- data/lib/cucumber/rb_support/rb_language.rb +8 -2
- data/lib/cucumber/rb_support/rb_step_definition.rb +23 -8
- data/lib/cucumber/rb_support/rb_transform.rb +35 -0
- data/lib/cucumber/rb_support/rb_world.rb +7 -1
- data/lib/cucumber/step_match.rb +25 -6
- data/lib/cucumber/step_mother.rb +9 -32
- data/lib/cucumber/version.rb +1 -1
- data/rails_generators/cucumber/templates/cucumber_environment.rb +2 -2
- data/rails_generators/cucumber/templates/env.rb +1 -8
- data/spec/cucumber/ast/feature_element_spec.rb +24 -23
- data/spec/cucumber/ast/scenario_outline_spec.rb +1 -1
- data/spec/cucumber/cli/options_spec.rb +5 -14
- data/spec/cucumber/core_ext/string_spec.rb +11 -13
- data/spec/cucumber/parser/feature_parser_spec.rb +6 -6
- data/spec/cucumber/step_mother_spec.rb +41 -38
- metadata +11 -8
- data/examples/self_test/features/transform_sample.feature +0 -10
- data/spec/cucumber/rails/stubs/mini_rails.rb +0 -18
- data/spec/cucumber/rails/stubs/test_help.rb +0 -1
- data/spec/cucumber/rails/world_spec.rb +0 -16
@@ -1,19 +1,24 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
require
|
2
|
+
require 'cucumber/core_ext/string'
|
3
|
+
require 'cucumber/rb_support/rb_group'
|
3
4
|
|
4
5
|
describe String, "#gzub" do
|
6
|
+
def groups(a)
|
7
|
+
a.map{|c| Cucumber::RbSupport::RbGroup.new(c[0], c[1])}
|
8
|
+
end
|
9
|
+
|
5
10
|
it "should format groups with format string" do
|
6
|
-
"I ate 1 egg this morning".gzub(
|
11
|
+
"I ate 1 egg this morning".gzub(groups([['ate', 2], ['1', 6], ['egg', 8], ['morning', 17]]), "<span>%s</span>").should ==
|
7
12
|
"I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
|
8
13
|
end
|
9
14
|
|
10
15
|
it "should format groups with format string when there are dupes" do
|
11
|
-
"I bob 1 bo this bobs".gzub(
|
16
|
+
"I bob 1 bo this bobs".gzub(groups([['bob', 2], ['1', 6], ['bo', 8], ['bobs', 16]]), "<span>%s</span>").should ==
|
12
17
|
"I <span>bob</span> <span>1</span> <span>bo</span> this <span>bobs</span>"
|
13
18
|
end
|
14
19
|
|
15
20
|
it "should format groups with block" do
|
16
|
-
f = "I ate 1 egg this morning".gzub(
|
21
|
+
f = "I ate 1 egg this morning".gzub(groups([['ate', 2], ['1', 6], ['egg', 8], ['morning', 17]])) do |m|
|
17
22
|
"<span>#{m}</span>"
|
18
23
|
end
|
19
24
|
f.should == "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
|
@@ -23,21 +28,14 @@ describe String, "#gzub" do
|
|
23
28
|
proc = lambda do |m|
|
24
29
|
"<span>#{m}</span>"
|
25
30
|
end
|
26
|
-
f = "I ate 1 egg this morning".gzub(
|
31
|
+
f = "I ate 1 egg this morning".gzub(groups([['ate', 2], ['1', 6], ['egg', 8], ['morning', 17]]), proc)
|
27
32
|
f.should == "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
|
28
33
|
end
|
29
34
|
|
30
35
|
it "should format groups with block with not all placeholders having a value" do
|
31
|
-
f = "another member named Bob joins the group".gzub(
|
36
|
+
f = "another member named Bob joins the group".gzub(groups([['another', 0], ['member', 8], ['Bob', 21]])) do |m|
|
32
37
|
"<span>#{m}</span>"
|
33
38
|
end
|
34
39
|
f.should == "<span>another</span> <span>member</span> named <span>Bob</span> joins the group"
|
35
40
|
end
|
36
|
-
|
37
|
-
it "should format match groups in a textile table row" do
|
38
|
-
f = "I ate 1 egg this morning".gzub(/I (\w+) (\d+) (\w+) this (\w+)/) do |m|
|
39
|
-
"<span>#{m}</span>"
|
40
|
-
end
|
41
|
-
f.should == "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
|
42
|
-
end
|
43
41
|
end
|
@@ -68,8 +68,8 @@ Feature: hi
|
|
68
68
|
parse("# My comment\n@hello @world Feature: hi\n").to_sexp.should ==
|
69
69
|
[:feature, nil, "Feature: hi",
|
70
70
|
[:comment, "# My comment\n"],
|
71
|
-
[:tag, "hello"],
|
72
|
-
[:tag, "world"]]
|
71
|
+
[:tag, "@hello"],
|
72
|
+
[:tag, "@world"]]
|
73
73
|
end
|
74
74
|
|
75
75
|
it "should not take the tags as part of a multiline name feature element" do
|
@@ -77,7 +77,7 @@ Feature: hi
|
|
77
77
|
[:feature, nil, "Feature: hi",
|
78
78
|
[:scenario, 2, "Scenario:", "test"],
|
79
79
|
[:scenario, 4, "Scenario:", "another",
|
80
|
-
[:tag, "hello"]]]
|
80
|
+
[:tag, "@hello"]]]
|
81
81
|
end
|
82
82
|
|
83
83
|
it "should parse a file with tags on a scenario" do
|
@@ -94,13 +94,13 @@ Feature: hi
|
|
94
94
|
Scenario: Second}).to_sexp.should ==
|
95
95
|
[:feature, nil, "Feature: hi",
|
96
96
|
[:comment, "# FC\n "],
|
97
|
-
[:tag, "ft"],
|
97
|
+
[:tag, "@ft"],
|
98
98
|
[:scenario, 6, 'Scenario:', 'First',
|
99
|
-
[:tag, "st1"], [:tag, "st2"],
|
99
|
+
[:tag, "@st1"], [:tag, "@st2"],
|
100
100
|
[:step_invocation, 7, "Given", "Pepper"]
|
101
101
|
],
|
102
102
|
[:scenario, 11, 'Scenario:', 'Second',
|
103
|
-
[:tag, "st3"], [:tag, "st4"], [:tag, "ST5"], [:tag, "
|
103
|
+
[:tag, "@st3"], [:tag, "@st4"], [:tag, "@ST5"], [:tag, "@#^%&ST6**!"]]]
|
104
104
|
end
|
105
105
|
end
|
106
106
|
|
@@ -186,96 +186,99 @@ or http://wiki.github.com/aslakhellesoy/cucumber/a-whole-new-world.
|
|
186
186
|
end
|
187
187
|
|
188
188
|
describe StepMother, "step argument transformations" do
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
189
|
+
before do
|
190
|
+
@dsl = Object.new
|
191
|
+
@dsl.extend(RbSupport::RbDsl)
|
192
|
+
|
193
|
+
@step_mother = StepMother.new
|
194
|
+
@step_mother.load_natural_language('en')
|
195
|
+
@rb = @step_mother.load_programming_language('rb')
|
193
196
|
end
|
194
197
|
|
195
198
|
describe "without capture groups" do
|
196
199
|
it "complains when registering with a with no transform block" do
|
197
200
|
lambda do
|
198
|
-
|
199
|
-
end.should raise_error(Cucumber::
|
201
|
+
@dsl.Transform('^abc$')
|
202
|
+
end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
|
200
203
|
end
|
201
204
|
|
202
205
|
it "complains when registering with a zero-arg transform block" do
|
203
206
|
lambda do
|
204
|
-
|
205
|
-
end.should raise_error(Cucumber::
|
207
|
+
@dsl.Transform('^abc$') {42}
|
208
|
+
end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
|
206
209
|
end
|
207
210
|
|
208
211
|
it "complains when registering with a splat-arg transform block" do
|
209
212
|
lambda do
|
210
|
-
|
211
|
-
end.should raise_error(Cucumber::
|
213
|
+
@dsl.Transform('^abc$') {|*splat| 42 }
|
214
|
+
end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
|
212
215
|
end
|
213
216
|
|
214
217
|
it "complains when transforming with an arity mismatch" do
|
215
218
|
lambda do
|
216
|
-
|
217
|
-
|
219
|
+
@dsl.Transform('^abc$') {|one, two| 42 }
|
220
|
+
@rb.execute_transforms(['abc'])
|
218
221
|
end.should raise_error(Cucumber::ArityMismatchError)
|
219
222
|
end
|
220
223
|
|
221
224
|
it "allows registering a regexp pattern that yields the step_arg matched" do
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
225
|
+
@dsl.Transform(/^ab*c$/) {|arg| 42}
|
226
|
+
@rb.execute_transforms(['ab']).should == ['ab']
|
227
|
+
@rb.execute_transforms(['ac']).should == [42]
|
228
|
+
@rb.execute_transforms(['abc']).should == [42]
|
229
|
+
@rb.execute_transforms(['abbc']).should == [42]
|
227
230
|
end
|
228
231
|
end
|
229
232
|
|
230
233
|
describe "with capture groups" do
|
231
234
|
it "complains when registering with a with no transform block" do
|
232
235
|
lambda do
|
233
|
-
|
234
|
-
end.should raise_error(Cucumber::
|
236
|
+
@dsl.Transform('^a(.)c$')
|
237
|
+
end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
|
235
238
|
end
|
236
239
|
|
237
240
|
it "complains when registering with a zero-arg transform block" do
|
238
241
|
lambda do
|
239
|
-
|
240
|
-
end.should raise_error(Cucumber::
|
242
|
+
@dsl.Transform('^a(.)c$') { 42 }
|
243
|
+
end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
|
241
244
|
end
|
242
245
|
|
243
246
|
it "complains when registering with a splat-arg transform block" do
|
244
247
|
lambda do
|
245
|
-
|
246
|
-
end.should raise_error(Cucumber::
|
248
|
+
@dsl.Transform('^a(.)c$') {|*splat| 42 }
|
249
|
+
end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
|
247
250
|
end
|
248
251
|
|
249
252
|
it "complains when transforming with an arity mismatch" do
|
250
253
|
lambda do
|
251
|
-
|
252
|
-
|
254
|
+
@dsl.Transform('^a(.)c$') {|one, two| 42 }
|
255
|
+
@rb.execute_transforms(['abc'])
|
253
256
|
end.should raise_error(Cucumber::ArityMismatchError)
|
254
257
|
end
|
255
258
|
|
256
259
|
it "allows registering a regexp pattern that yields capture groups" do
|
257
|
-
|
260
|
+
@dsl.Transform(/^shape: (.+), color: (.+)$/) do |shape, color|
|
258
261
|
{shape.to_sym => color.to_sym}
|
259
262
|
end
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
+
@rb.execute_transforms(['shape: circle, color: blue']).should == [{:circle => :blue}]
|
264
|
+
@rb.execute_transforms(['shape: square, color: red']).should == [{:square => :red}]
|
265
|
+
@rb.execute_transforms(['not shape: square, not color: red']).should == ['not shape: square, not color: red']
|
263
266
|
end
|
264
267
|
end
|
265
268
|
|
266
269
|
it "allows registering a string pattern" do
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
270
|
+
@dsl.Transform('^ab*c$') {|arg| 42}
|
271
|
+
@rb.execute_transforms(['ab']).should == ['ab']
|
272
|
+
@rb.execute_transforms(['ac']).should == [42]
|
273
|
+
@rb.execute_transforms(['abc']).should == [42]
|
274
|
+
@rb.execute_transforms(['abbc']).should == [42]
|
272
275
|
end
|
273
276
|
|
274
277
|
it "gives match priority to transforms defined last" do
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
278
|
+
@dsl.Transform(/^transform_me$/) {|arg| :foo }
|
279
|
+
@dsl.Transform(/^transform_me$/) {|arg| :bar }
|
280
|
+
@dsl.Transform(/^transform_me$/) {|arg| :baz }
|
281
|
+
@rb.execute_transforms(['transform_me']).should == [:baz]
|
279
282
|
end
|
280
283
|
end
|
281
284
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.102
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- "Aslak Helles\xC3\xB8y"
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-09-
|
12
|
+
date: 2009-09-22 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.
|
33
|
+
version: 1.4.2
|
34
34
|
version:
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: polyglot
|
@@ -40,7 +40,7 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - ">="
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.2.
|
43
|
+
version: 0.2.9
|
44
44
|
version:
|
45
45
|
- !ruby/object:Gem::Dependency
|
46
46
|
name: diff-lcs
|
@@ -289,7 +289,6 @@ files:
|
|
289
289
|
- examples/self_test/features/support/env.rb
|
290
290
|
- examples/self_test/features/tags_sample.feature
|
291
291
|
- examples/self_test/features/tons_of_cukes.feature
|
292
|
-
- examples/self_test/features/transform_sample.feature
|
293
292
|
- examples/self_test/features/undefined_multiline_args.feature
|
294
293
|
- examples/self_test/list-of-features.txt
|
295
294
|
- examples/sinatra/README.textile
|
@@ -347,6 +346,7 @@ files:
|
|
347
346
|
- features/cucumber_cli_diff_disabled.feature
|
348
347
|
- features/cucumber_cli_outlines.feature
|
349
348
|
- features/custom_formatter.feature
|
349
|
+
- features/default_snippets.feature
|
350
350
|
- features/drb_server_integration.feature
|
351
351
|
- features/exception_in_after_block.feature
|
352
352
|
- features/exception_in_after_step_block.feature
|
@@ -358,6 +358,7 @@ files:
|
|
358
358
|
- features/junit_formatter.feature
|
359
359
|
- features/language_from_header.feature
|
360
360
|
- features/multiline_names.feature
|
361
|
+
- features/negative_tagged_hooks.feature
|
361
362
|
- features/post_configuration_hook.feature
|
362
363
|
- features/profiles.feature
|
363
364
|
- features/rake_task.feature
|
@@ -455,13 +456,18 @@ files:
|
|
455
456
|
- lib/cucumber/py_support/py_dsl.py
|
456
457
|
- lib/cucumber/py_support/py_language.py
|
457
458
|
- lib/cucumber/py_support/py_language.rb
|
459
|
+
- lib/cucumber/rails/action_controller.rb
|
460
|
+
- lib/cucumber/rails/active_record.rb
|
458
461
|
- lib/cucumber/rails/rspec.rb
|
462
|
+
- lib/cucumber/rails/test_unit.rb
|
459
463
|
- lib/cucumber/rails/world.rb
|
460
464
|
- lib/cucumber/rake/task.rb
|
461
465
|
- lib/cucumber/rb_support/rb_dsl.rb
|
466
|
+
- lib/cucumber/rb_support/rb_group.rb
|
462
467
|
- lib/cucumber/rb_support/rb_hook.rb
|
463
468
|
- lib/cucumber/rb_support/rb_language.rb
|
464
469
|
- lib/cucumber/rb_support/rb_step_definition.rb
|
470
|
+
- lib/cucumber/rb_support/rb_transform.rb
|
465
471
|
- lib/cucumber/rb_support/rb_world.rb
|
466
472
|
- lib/cucumber/rspec_neuter.rb
|
467
473
|
- lib/cucumber/step_match.rb
|
@@ -507,9 +513,6 @@ files:
|
|
507
513
|
- spec/cucumber/formatter/progress_spec.rb
|
508
514
|
- spec/cucumber/parser/feature_parser_spec.rb
|
509
515
|
- spec/cucumber/parser/table_parser_spec.rb
|
510
|
-
- spec/cucumber/rails/stubs/mini_rails.rb
|
511
|
-
- spec/cucumber/rails/stubs/test_help.rb
|
512
|
-
- spec/cucumber/rails/world_spec.rb
|
513
516
|
- spec/cucumber/rb_support/rb_step_definition_spec.rb
|
514
517
|
- spec/cucumber/sell_cucumbers.feature
|
515
518
|
- spec/cucumber/step_mother_spec.rb
|
@@ -1,10 +0,0 @@
|
|
1
|
-
Feature: Step argument transformations
|
2
|
-
|
3
|
-
Scenario: transform with matches
|
4
|
-
Then I should transform '10' to an Integer
|
5
|
-
|
6
|
-
Scenario: transform with matches that capture
|
7
|
-
Then I should transform 'abc' to a Symbol
|
8
|
-
|
9
|
-
Scenario: transform without matches
|
10
|
-
Then I should not transform '10' to an Integer
|
@@ -1,18 +0,0 @@
|
|
1
|
-
# Define some stubs to fake Rails...
|
2
|
-
module ActiveRecord
|
3
|
-
class Base
|
4
|
-
end
|
5
|
-
end
|
6
|
-
|
7
|
-
module ActionController
|
8
|
-
class Dispatcher
|
9
|
-
end
|
10
|
-
|
11
|
-
class Base
|
12
|
-
end
|
13
|
-
|
14
|
-
class IntegrationTest
|
15
|
-
def self.use_transactional_fixtures=(x)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
# This file is loaded by rails/world.rb
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require File.dirname(__FILE__) + '/../../spec_helper'
|
2
|
-
$:.unshift(File.dirname(__FILE__) + '/stubs')
|
3
|
-
|
4
|
-
describe "Rails world" do
|
5
|
-
|
6
|
-
it "should run without Test::Unit.run defined" do
|
7
|
-
require "mini_rails"
|
8
|
-
|
9
|
-
step_mother = Cucumber::StepMother.new
|
10
|
-
step_mother.load_natural_language('en')
|
11
|
-
rb = step_mother.load_programming_language('rb')
|
12
|
-
|
13
|
-
require "cucumber/rails/world"
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|