cucumber-core 1.0.0.beta.4 → 1.0.0

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.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CONTRIBUTING.md +14 -0
  4. data/HISTORY.md +14 -1
  5. data/README.md +34 -33
  6. data/lib/cucumber/core.rb +3 -5
  7. data/lib/cucumber/core/ast/background.rb +13 -2
  8. data/lib/cucumber/core/ast/comment.rb +8 -2
  9. data/lib/cucumber/core/ast/examples_table.rb +14 -5
  10. data/lib/cucumber/core/ast/feature.rb +15 -6
  11. data/lib/cucumber/core/ast/scenario.rb +17 -4
  12. data/lib/cucumber/core/ast/scenario_outline.rb +20 -8
  13. data/lib/cucumber/core/ast/tag.rb +5 -3
  14. data/lib/cucumber/core/compiler.rb +39 -7
  15. data/lib/cucumber/core/filter.rb +83 -0
  16. data/lib/cucumber/core/gherkin/ast_builder.rb +7 -2
  17. data/lib/cucumber/core/gherkin/document.rb +5 -2
  18. data/lib/cucumber/core/gherkin/parser.rb +6 -1
  19. data/lib/cucumber/core/test/action.rb +8 -8
  20. data/lib/cucumber/core/test/around_hook.rb +19 -0
  21. data/lib/cucumber/core/test/case.rb +6 -4
  22. data/lib/cucumber/core/test/filters/locations_filter.rb +3 -6
  23. data/lib/cucumber/core/test/filters/name_filter.rb +3 -7
  24. data/lib/cucumber/core/test/filters/tag_filter.rb +4 -2
  25. data/lib/cucumber/core/test/result.rb +5 -7
  26. data/lib/cucumber/core/test/runner.rb +39 -40
  27. data/lib/cucumber/core/test/step.rb +7 -10
  28. data/lib/cucumber/core/version.rb +1 -1
  29. data/spec/capture_warnings.rb +5 -0
  30. data/spec/cucumber/core/filter_spec.rb +100 -0
  31. data/spec/cucumber/core/gherkin/parser_spec.rb +0 -1
  32. data/spec/cucumber/core/test/action_spec.rb +29 -31
  33. data/spec/cucumber/core/test/runner_spec.rb +5 -5
  34. data/spec/cucumber/core/test/step_spec.rb +18 -9
  35. data/spec/cucumber/core_spec.rb +40 -172
  36. metadata +11 -16
  37. data/lib/cucumber/core/test/hooks.rb +0 -93
  38. data/lib/cucumber/core/test/mapper.rb +0 -150
  39. data/lib/cucumber/initializer.rb +0 -18
  40. data/spec/cucumber/core/test/hooks_spec.rb +0 -30
  41. data/spec/cucumber/core/test/mapper_spec.rb +0 -203
  42. data/spec/cucumber/initializer_spec.rb +0 -49
@@ -2,7 +2,7 @@ module Cucumber
2
2
  module Core
3
3
  class Version
4
4
  def self.to_s
5
- "1.0.0.beta.4"
5
+ "1.0.0"
6
6
  end
7
7
  end
8
8
  end
@@ -16,6 +16,11 @@ module CaptureWarnings
16
16
  print_warnings('other', other_warnings) if ENV['VIEW_OTHER_WARNINGS']
17
17
  end
18
18
 
19
+ # Until they fix https://bugs.ruby-lang.org/issues/10661
20
+ if RUBY_VERSION == "2.2.0"
21
+ project_warnings = project_warnings.reject { |w| w =~ /warning: possible reference to past scope/ }
22
+ end
23
+
19
24
  if project_warnings.any?
20
25
  puts "#{ project_warnings.count } cucumber-core warnings detected"
21
26
  print_warnings('cucumber-core', project_warnings)
@@ -0,0 +1,100 @@
1
+ require 'cucumber/core/gherkin/writer'
2
+ require 'cucumber/core'
3
+ require 'cucumber/core/filter'
4
+
5
+ module Cucumber::Core
6
+ describe Filter do
7
+ include Cucumber::Core::Gherkin::Writer
8
+ include Cucumber::Core
9
+
10
+ describe ".new" do
11
+ let(:receiver) { double.as_null_object }
12
+
13
+ let(:doc) {
14
+ gherkin do
15
+ feature do
16
+ scenario 'x' do
17
+ step 'a step'
18
+ end
19
+
20
+ scenario 'y' do
21
+ step 'a step'
22
+ end
23
+ end
24
+ end
25
+ }
26
+
27
+ it "creates a filter class that can pass-through by default" do
28
+ my_filter_class = Filter.new
29
+ my_filter = my_filter_class.new
30
+ expect(receiver).to receive(:test_case) { |test_case|
31
+ expect(test_case.test_steps.length).to eq 1
32
+ expect(test_case.test_steps.first.name).to eq 'a step'
33
+ }.exactly(2).times
34
+ compile [doc], receiver, [my_filter]
35
+ end
36
+
37
+ context "customizing by subclassing" do
38
+
39
+ # Each filter imlicitly gets a :receiver attribute
40
+ # that you need to call with the new test case
41
+ # once you've received yours and modified it.
42
+ class BasicBlankingFilter < Filter.new
43
+ def test_case(test_case)
44
+ test_case.with_steps([]).describe_to(receiver)
45
+ end
46
+ end
47
+
48
+ # You can pass the names of attributes when building a
49
+ # filter, allowing you to have custom attributes.
50
+ class NamedBlankingFilter < Filter.new(:name_pattern)
51
+ def test_case(test_case)
52
+ if test_case.name =~ name_pattern
53
+ test_case.with_steps([]).describe_to(receiver)
54
+ else
55
+ test_case.describe_to(receiver) # or just call `super`
56
+ end
57
+ self
58
+ end
59
+ end
60
+
61
+ it "can override methods from the base class" do
62
+ expect(receiver).to receive(:test_case) { |test_case|
63
+ expect(test_case.test_steps.length).to eq 0
64
+ }.exactly(2).times
65
+ run BasicBlankingFilter.new
66
+ end
67
+
68
+ it "can take arguments" do
69
+ expect(receiver).to receive(:test_case) { |test_case|
70
+ expect(test_case.test_steps.length).to eq 0
71
+ }.once.ordered
72
+ expect(receiver).to receive(:test_case) { |test_case|
73
+ expect(test_case.test_steps.length).to eq 1
74
+ }.once.ordered
75
+ run NamedBlankingFilter.new(/x/)
76
+ end
77
+
78
+ end
79
+
80
+ context "customizing by using a block" do
81
+ BlockBlankingFilter = Filter.new do
82
+ def test_case(test_case)
83
+ test_case.with_steps([]).describe_to(receiver)
84
+ end
85
+ end
86
+
87
+ it "allows methods to be overridden" do
88
+ expect(receiver).to receive(:test_case) { |test_case|
89
+ expect(test_case.test_steps.length).to eq 0
90
+ }.exactly(2).times
91
+ run BlockBlankingFilter.new
92
+ end
93
+ end
94
+
95
+ def run(filter)
96
+ compile [doc], receiver, [filter]
97
+ end
98
+ end
99
+ end
100
+ end
@@ -1,5 +1,4 @@
1
1
  # -*- encoding: utf-8 -*-
2
- require 'cucumber/initializer'
3
2
  require 'cucumber/core/gherkin/parser'
4
3
  require 'cucumber/core/gherkin/writer'
5
4
 
@@ -6,7 +6,6 @@ module Cucumber
6
6
  module Test
7
7
 
8
8
  describe Action do
9
- let(:last_result) { double('last_result') }
10
9
 
11
10
  context "constructed without a block" do
12
11
  it "raises an error" do
@@ -17,51 +16,52 @@ module Cucumber
17
16
  context "executing" do
18
17
  it "executes the block passed to the constructor" do
19
18
  executed = false
20
- mapping = Action.new { executed = true }
21
- mapping.execute(last_result)
19
+ action = Action.new { executed = true }
20
+ action.execute
22
21
  expect( executed ).to be_truthy
23
22
  end
24
23
 
25
24
  it "returns a passed result if the block doesn't fail" do
26
- mapping = Action.new {}
27
- expect( mapping.execute(last_result) ).to be_passed
25
+ action = Action.new {}
26
+ expect( action.execute ).to be_passed
28
27
  end
29
28
 
30
29
  it "returns a failed result when the block raises an error" do
31
30
  exception = StandardError.new
32
- mapping = Action.new { raise exception }
33
- result = mapping.execute(last_result)
31
+ action = Action.new { raise exception }
32
+ result = action.execute
34
33
  expect( result ).to be_failed
35
34
  expect( result.exception ).to eq exception
36
35
  end
37
36
 
38
- it "yields the last_result to the block" do
39
- last_result_spy = nil
40
- mapping = Action.new { |last_result| last_result_spy = last_result }
41
- mapping.execute(last_result)
42
- expect(last_result_spy).to eq last_result
37
+ it "yields the args passed to #execute to the block" do
38
+ args = [double, double]
39
+ args_spy = nil
40
+ action = Action.new { |arg1, arg2| args_spy = [arg1, arg2] }
41
+ action.execute(*args)
42
+ expect(args_spy).to eq args
43
43
  end
44
44
 
45
45
  it "returns a pending result if a Result::Pending error is raised" do
46
46
  exception = Result::Pending.new("TODO")
47
- mapping = Action.new { raise exception }
48
- result = mapping.execute(last_result)
47
+ action = Action.new { raise exception }
48
+ result = action.execute
49
49
  expect( result ).to be_pending
50
50
  expect( result.message ).to eq "TODO"
51
51
  end
52
52
 
53
53
  it "returns a skipped result if a Result::Skipped error is raised" do
54
54
  exception = Result::Skipped.new("Not working right now")
55
- mapping = Action.new { raise exception }
56
- result = mapping.execute(last_result)
55
+ action = Action.new { raise exception }
56
+ result = action.execute
57
57
  expect( result ).to be_skipped
58
58
  expect( result.message ).to eq "Not working right now"
59
59
  end
60
60
 
61
61
  it "returns an undefined result if a Result::Undefined error is raised" do
62
62
  exception = Result::Undefined.new("new step")
63
- mapping = Action.new { raise exception }
64
- result = mapping.execute(last_result)
63
+ action = Action.new { raise exception }
64
+ result = action.execute
65
65
  expect( result ).to be_undefined
66
66
  expect( result.message ).to eq "new step"
67
67
  end
@@ -75,14 +75,14 @@ module Cucumber
75
75
  end
76
76
 
77
77
  it "records the nanoseconds duration of the execution on the result" do
78
- mapping = Action.new { }
79
- duration = mapping.execute(last_result).duration
78
+ action = Action.new { }
79
+ duration = action.execute.duration
80
80
  expect( duration ).to be_duration 1
81
81
  end
82
82
 
83
83
  it "records the duration of a failed execution" do
84
- mapping = Action.new { raise StandardError }
85
- duration = mapping.execute(last_result).duration
84
+ action = Action.new { raise StandardError }
85
+ duration = action.execute.duration
86
86
  expect( duration ).to be_duration 1
87
87
  end
88
88
  end
@@ -92,35 +92,33 @@ module Cucumber
92
92
  context "skipping" do
93
93
  it "does not execute the block" do
94
94
  executed = false
95
- mapping = Action.new { executed = true }
96
- mapping.skip(last_result)
95
+ action = Action.new { executed = true }
96
+ action.skip
97
97
  expect( executed ).to be_falsey
98
98
  end
99
99
 
100
100
  it "returns a skipped result" do
101
- mapping = Action.new {}
102
- expect( mapping.skip(last_result) ).to be_skipped
101
+ action = Action.new {}
102
+ expect( action.skip ).to be_skipped
103
103
  end
104
104
  end
105
105
  end
106
106
 
107
107
  describe UndefinedAction do
108
- let(:mapping) { UndefinedAction.new }
108
+ let(:action) { UndefinedAction.new }
109
109
  let(:test_step) { double }
110
- let(:last_result) { double('last_result') }
111
110
 
112
111
  context "executing" do
113
112
  it "returns an undefined result" do
114
- expect( mapping.execute(last_result) ).to be_undefined
113
+ expect( action.execute ).to be_undefined
115
114
  end
116
115
  end
117
116
 
118
117
  context "skipping" do
119
118
  it "returns an undefined result" do
120
- expect( mapping.skip(last_result) ).to be_undefined
119
+ expect( action.skip ).to be_undefined
121
120
  end
122
121
  end
123
-
124
122
  end
125
123
 
126
124
  end
@@ -10,10 +10,10 @@ module Cucumber::Core::Test
10
10
  let(:source) { double }
11
11
  let(:runner) { Runner.new(report) }
12
12
  let(:report) { double.as_null_object }
13
- let(:passing) { Step.new([double]).with_mapping {} }
14
- let(:failing) { Step.new([double]).with_mapping { raise exception } }
15
- let(:pending) { Step.new([double]).with_mapping { raise Result::Pending.new("TODO") } }
16
- let(:skipping) { Step.new([double]).with_mapping { raise Result::Skipped.new } }
13
+ let(:passing) { Step.new([double]).with_action {} }
14
+ let(:failing) { Step.new([double]).with_action { raise exception } }
15
+ let(:pending) { Step.new([double]).with_action { raise Result::Pending.new("TODO") } }
16
+ let(:skipping) { Step.new([double]).with_action { raise Result::Skipped.new } }
17
17
  let(:undefined) { Step.new([double]) }
18
18
  let(:exception) { StandardError.new('test error') }
19
19
 
@@ -203,7 +203,7 @@ module Cucumber::Core::Test
203
203
  result_spy = last_result
204
204
  end
205
205
  after_hook = Step.new([double], hook_mapping)
206
- failing_step = Step.new([double]).with_mapping { fail }
206
+ failing_step = Step.new([double]).with_action { fail }
207
207
  test_case = Case.new([failing_step, after_hook], source)
208
208
  test_case.describe_to runner
209
209
  expect(result_spy).to be_failed
@@ -2,7 +2,6 @@ require 'cucumber/core/test/step'
2
2
 
3
3
  module Cucumber::Core::Test
4
4
  describe Step do
5
- let(:last_result) { double('last_result') }
6
5
 
7
6
  describe "describing itself" do
8
7
  it "describes itself to a visitor" do
@@ -28,28 +27,38 @@ module Cucumber::Core::Test
28
27
  describe "executing" do
29
28
  let(:ast_step) { double }
30
29
 
31
- context "when a passing mapping exists" do
30
+ it "passes arbitrary arguments to the action's block" do
31
+ args_spy = nil
32
+ expected_args = [double, double]
33
+ test_step = Step.new([ast_step]).with_action do |*actual_args|
34
+ args_spy = actual_args
35
+ end
36
+ test_step.execute(*expected_args)
37
+ expect(args_spy).to eq expected_args
38
+ end
39
+
40
+ context "when a passing action exists" do
32
41
  it "returns a passing result" do
33
- test_step = Step.new([ast_step]).with_mapping {}
34
- expect( test_step.execute(last_result) ).to be_passed
42
+ test_step = Step.new([ast_step]).with_action {}
43
+ expect( test_step.execute ).to be_passed
35
44
  end
36
45
  end
37
46
 
38
- context "when a failing mapping exists" do
47
+ context "when a failing action exists" do
39
48
  let(:exception) { StandardError.new('oops') }
40
49
 
41
50
  it "returns a failing result" do
42
- test_step = Step.new([ast_step]).with_mapping { raise exception }
43
- result = test_step.execute(last_result)
51
+ test_step = Step.new([ast_step]).with_action { raise exception }
52
+ result = test_step.execute
44
53
  expect( result ).to be_failed
45
54
  expect( result.exception ).to eq exception
46
55
  end
47
56
  end
48
57
 
49
- context "with no mapping" do
58
+ context "with no action" do
50
59
  it "returns an Undefined result" do
51
60
  test_step = Step.new([ast_step])
52
- result = test_step.execute(last_result)
61
+ result = test_step.execute
53
62
  expect( result ).to be_undefined
54
63
  end
55
64
  end
@@ -1,8 +1,10 @@
1
1
  require 'report_api_spy'
2
2
  require 'cucumber/core'
3
+ require 'cucumber/core/filter'
3
4
  require 'cucumber/core/gherkin/writer'
4
5
  require 'cucumber/core/platform'
5
6
  require 'cucumber/core/report/summary'
7
+ require 'cucumber/core/test/around_hook'
6
8
 
7
9
  module Cucumber
8
10
  describe Core do
@@ -71,7 +73,7 @@ module Cucumber
71
73
  end
72
74
  end
73
75
 
74
- compile [gherkin], visitor, [[Cucumber::Core::Test::TagFilter, [['@a', '@b']]]]
76
+ compile [gherkin], visitor, [Cucumber::Core::Test::TagFilter.new(['@a', '@b'])]
75
77
  end
76
78
 
77
79
  describe 'with tag filters that have limits' do
@@ -114,7 +116,7 @@ module Cucumber
114
116
 
115
117
  context 'on scenarios' do
116
118
  let(:tag_filters) {
117
- [[Cucumber::Core::Test::TagFilter, [['@one:1']]]]
119
+ [ Cucumber::Core::Test::TagFilter.new(['@one:1']) ]
118
120
  }
119
121
 
120
122
  it 'raises a tag excess error with the location of the test cases' do
@@ -128,7 +130,7 @@ module Cucumber
128
130
 
129
131
  context 'on scenario outlines' do
130
132
  let(:tag_filters) {
131
- [[Cucumber::Core::Test::TagFilter, [['@three:1']]]]
133
+ [ Cucumber::Core::Test::TagFilter.new(['@three:1']) ]
132
134
  }
133
135
 
134
136
  it 'raises a tag excess error with the location of the test cases' do
@@ -142,7 +144,7 @@ module Cucumber
142
144
 
143
145
  context 'on a feature with scenarios' do
144
146
  let(:tag_filters) {
145
- [[Cucumber::Core::Test::TagFilter, [['@feature:2']]]]
147
+ [ Cucumber::Core::Test::TagFilter.new(['@feature:2']) ]
146
148
  }
147
149
 
148
150
  it 'raises a tag excess error with the location of the test cases' do
@@ -158,7 +160,7 @@ module Cucumber
158
160
 
159
161
  context 'with negated tags' do
160
162
  let(:tag_filters) {
161
- [[Cucumber::Core::Test::TagFilter, [['~@one:1']]]]
163
+ [ Cucumber::Core::Test::TagFilter.new(['~@one:1']) ]
162
164
  }
163
165
 
164
166
  it 'raises a tag excess error with the location of the test cases' do
@@ -172,7 +174,7 @@ module Cucumber
172
174
 
173
175
  context 'whith multiple tag limits' do
174
176
  let(:tag_filters) {
175
- [[Cucumber::Core::Test::TagFilter, [['@one:1, @three:1', '~@feature:3']]]]
177
+ [ Cucumber::Core::Test::TagFilter.new(['@one:1, @three:1', '~@feature:3']) ]
176
178
  }
177
179
 
178
180
  it 'raises a tag excess error with the location of the test cases' do
@@ -198,17 +200,20 @@ module Cucumber
198
200
 
199
201
  describe "executing a test suite" do
200
202
  context "without hooks" do
201
- class StepTestMappings
202
- Failure = Class.new(StandardError)
203
-
204
- def test_case(test_case, mapper)
205
- self
206
- end
203
+ class WithSteps < Core::Filter.new
204
+ def test_case(test_case)
205
+ test_steps = test_case.test_steps.map do |step|
206
+ case step.name
207
+ when /fail/
208
+ step.with_action { raise Failure }
209
+ when /pass/
210
+ step.with_action {}
211
+ else
212
+ step
213
+ end
214
+ end
207
215
 
208
- def test_step(step, mapper)
209
- mapper.map { raise Failure } if step.name =~ /fail/
210
- mapper.map {} if step.name =~ /pass/
211
- self
216
+ test_case.with_steps(test_steps).describe_to(receiver)
212
217
  end
213
218
  end
214
219
 
@@ -228,9 +233,8 @@ module Cucumber
228
233
  end
229
234
  end
230
235
  report = Core::Report::Summary.new
231
- mappings = StepTestMappings.new
232
236
 
233
- execute [gherkin], mappings, report
237
+ execute [gherkin], report, [WithSteps.new]
234
238
 
235
239
  expect( report.test_cases.total ).to eq 2
236
240
  expect( report.test_cases.total_passed ).to eq 1
@@ -243,149 +247,22 @@ module Cucumber
243
247
  end
244
248
  end
245
249
 
246
- context "with hooks" do
247
- class HookTestMappings
248
- Failure = Class.new(StandardError)
249
- attr_reader :logger
250
-
251
- def initialize
252
- @logger = []
253
- end
254
-
255
- def test_case(test_case, mapper)
256
- mapper.before { @logger << ['--'] }
257
- failing_before = proc do
258
- @logger << [:failing_before, test_case.name]
259
- raise Failure
260
- end
261
- passing_after = proc do
262
- @logger << [:passing_after, test_case.name]
263
- end
264
- passing_before = proc do
265
- @logger << [:passing_before, test_case.name]
266
- end
267
- failing_after = proc do
268
- @logger << [:failing_after, test_case.name]
269
- raise Failure
270
- end
271
-
272
- case test_case.name
273
-
274
- when /fail before/
275
- mapper.before( &failing_before )
276
- mapper.after( &passing_after )
277
-
278
- when /fail after/
279
- mapper.before( &passing_before )
280
- mapper.after( &failing_after )
281
-
282
- else
283
- mapper.before( &passing_before )
284
- mapper.after( &passing_after )
285
-
286
- end
287
-
288
- self
289
- end
290
-
291
- def test_step(test_step, mapper)
292
- mapper.map { @logger << [:step, test_step.name] } # all steps pass
293
- if test_step.name == 'fail after'
294
- mapper.after do
295
- @logger << :failing_after_step
296
- raise Failure
297
- end
298
- end
299
- self
300
- end
301
- end
302
-
303
- it "executes the steps and hooks in the right order" do
304
- gherkin = gherkin do
305
- feature do
306
- scenario 'fail before' do
307
- step 'passing'
308
- end
309
-
310
- scenario 'fail after' do
311
- step 'passing'
312
- end
313
-
314
- scenario 'fail step' do
315
- step 'fail after'
316
- end
317
-
318
- scenario 'passing' do
319
- step 'passing'
320
- end
321
- end
322
- end
323
- report = Core::Report::Summary.new
324
- mappings = HookTestMappings.new
325
-
326
- execute [gherkin], mappings, report
327
-
328
- expect( report.test_steps.total ).to eq(17)
329
- expect( report.test_steps.total_failed ).to eq(3)
330
- expect( report.test_cases.total ).to eq(4)
331
- expect( report.test_cases.total_passed ).to eq(1)
332
- expect( report.test_cases.total_failed ).to eq(3)
333
- expect( mappings.logger ).to eq [
334
- ["--"],
335
- [:failing_before, "Scenario: fail before"],
336
- [:passing_after, "Scenario: fail before"],
337
- ["--"],
338
- [:passing_before, "Scenario: fail after"],
339
- [:step, "passing"],
340
- [:failing_after, "Scenario: fail after"],
341
- ["--"],
342
- [:passing_before, "Scenario: fail step"],
343
- [:step, "fail after"],
344
- :failing_after_step,
345
- [:passing_after, "Scenario: fail step"],
346
- ["--"],
347
- [:passing_before, "Scenario: passing"],
348
- [:step, "passing"],
349
- [:passing_after, "Scenario: passing"]
350
- ]
351
- end
352
- end
353
-
354
250
  context "with around hooks" do
355
- class AroundHookTestMappings
356
- attr_reader :logger
357
-
358
- def initialize
359
- @logger = []
360
- end
361
-
362
- def test_case(test_case, mapper)
363
- logger = @logger
364
- mapper.around do |run_scenario|
251
+ class WithAroundHooks < Core::Filter.new(:logger)
252
+ def test_case(test_case)
253
+ base_step = Core::Test::Step.new(test_case.source)
254
+ test_steps = [
255
+ base_step.with_action { logger << :step },
256
+ ]
257
+
258
+ around_hook = Core::Test::AroundHook.new do |run_scenario|
365
259
  logger << :before_all
366
260
  run_scenario.call
367
261
  logger << :middle
368
262
  run_scenario.call
369
263
  logger << :after_all
370
264
  end
371
- mapper.before do
372
- logger << :before
373
- end
374
- mapper.after do
375
- logger << :after
376
- end
377
- self
378
- end
379
-
380
- def test_step(step, mapper)
381
- logger = @logger
382
- mapper.map do
383
- logger << :during
384
- end
385
- mapper.after do
386
- logger << :after_step
387
- end
388
- self
265
+ test_case.with_steps(test_steps).with_around_hooks([around_hook]).describe_to(receiver)
389
266
  end
390
267
  end
391
268
 
@@ -398,24 +275,18 @@ module Cucumber
398
275
  end
399
276
  end
400
277
  report = Core::Report::Summary.new
401
- mappings = AroundHookTestMappings.new
278
+ logger = []
402
279
 
403
- execute [gherkin], mappings, report
280
+ execute [gherkin], report, [WithAroundHooks.new(logger)]
404
281
 
405
282
  expect( report.test_cases.total ).to eq 1
406
283
  expect( report.test_cases.total_passed ).to eq 1
407
284
  expect( report.test_cases.total_failed ).to eq 0
408
- expect( mappings.logger ).to eq [
285
+ expect( logger ).to eq [
409
286
  :before_all,
410
- :before,
411
- :during,
412
- :after_step,
413
- :after,
287
+ :step,
414
288
  :middle,
415
- :before,
416
- :during,
417
- :after_step,
418
- :after,
289
+ :step,
419
290
  :after_all
420
291
  ]
421
292
  end
@@ -439,9 +310,8 @@ module Cucumber
439
310
  end
440
311
  end
441
312
  report = Core::Report::Summary.new
442
- mappings = HookTestMappings.new
443
313
 
444
- execute [gherkin], mappings, report, [[Cucumber::Core::Test::TagFilter, ['@a']]]
314
+ execute [gherkin], report, [ Cucumber::Core::Test::TagFilter.new(['@a']) ]
445
315
 
446
316
  expect( report.test_cases.total ).to eq 2
447
317
  end
@@ -458,9 +328,8 @@ module Cucumber
458
328
  end
459
329
  end
460
330
  report = Core::Report::Summary.new
461
- mappings = HookTestMappings.new
462
331
 
463
- execute [gherkin], mappings, report, [[Cucumber::Core::Test::NameFilter, [[/scenario/]]]]
332
+ execute [gherkin], report, [ Cucumber::Core::Test::NameFilter.new([/scenario/]) ]
464
333
 
465
334
  expect( report.test_cases.total ).to eq 1
466
335
  end
@@ -483,11 +352,10 @@ module Cucumber
483
352
  end
484
353
 
485
354
  report = Core::Report::Summary.new
486
- mappings = HookTestMappings.new
487
355
  some_feature = Cucumber::Core::Ast::Location.new("some.feature")
488
- filters = [[ Cucumber::Core::Test::LocationsFilter, [[some_feature]] ]]
356
+ filters = [ Cucumber::Core::Test::LocationsFilter.new([some_feature]) ]
489
357
 
490
- execute documents, mappings, report, filters
358
+ execute documents, report, filters
491
359
 
492
360
  expect( report.test_cases.total ).to eq 1
493
361
  end