cucumber-core 1.0.0.beta.3 → 1.0.0.beta.4
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 +4 -4
- data/.yardopts +6 -0
- data/HISTORY.md +20 -0
- data/README.md +121 -3
- data/cucumber-core.gemspec +1 -0
- data/lib/cucumber/core.rb +19 -13
- data/lib/cucumber/core/ast/data_table.rb +1 -1
- data/lib/cucumber/core/ast/examples_table.rb +5 -4
- data/lib/cucumber/core/ast/feature.rb +7 -1
- data/lib/cucumber/core/ast/scenario.rb +1 -1
- data/lib/cucumber/core/ast/step.rb +2 -2
- data/lib/cucumber/core/compiler.rb +7 -0
- data/lib/cucumber/core/gherkin/ast_builder.rb +15 -10
- data/lib/cucumber/core/platform.rb +0 -15
- data/lib/cucumber/core/report/summary.rb +26 -0
- data/lib/cucumber/core/test/case.rb +1 -1
- data/lib/cucumber/core/test/filters.rb +2 -47
- data/lib/cucumber/core/test/filters/locations_filter.rb +21 -0
- data/lib/cucumber/core/test/filters/name_filter.rb +27 -0
- data/lib/cucumber/core/test/hooks.rb +17 -0
- data/lib/cucumber/core/test/mapper.rb +14 -2
- data/lib/cucumber/core/test/result.rb +40 -30
- data/lib/cucumber/core/test/timer.rb +3 -1
- data/lib/cucumber/core/version.rb +1 -1
- data/spec/cucumber/core/ast/examples_table_spec.rb +19 -12
- data/spec/cucumber/core/ast/outline_step_spec.rb +3 -3
- data/spec/cucumber/core/gherkin/parser_spec.rb +18 -0
- data/spec/cucumber/core/test/action_spec.rb +3 -2
- data/spec/cucumber/core/test/duration_matcher.rb +19 -0
- data/spec/cucumber/core/test/mapper_spec.rb +30 -10
- data/spec/cucumber/core/test/result_spec.rb +47 -5
- data/spec/cucumber/core/test/runner_spec.rb +3 -2
- data/spec/cucumber/core/test/timer_spec.rb +13 -0
- data/spec/cucumber/core_spec.rb +33 -49
- data/spec/readme_spec.rb +36 -0
- metadata +26 -3
@@ -32,7 +32,7 @@ module Cucumber
|
|
32
32
|
let(:name) { 'a <color> cucumber' }
|
33
33
|
|
34
34
|
it "replaces the argument" do
|
35
|
-
row = ExamplesTable::Row.new({'color' => 'green'}, 1, location)
|
35
|
+
row = ExamplesTable::Row.new({'color' => 'green'}, 1, location, language)
|
36
36
|
expect( outline_step.to_step(row).name ).to eq 'a green cucumber'
|
37
37
|
end
|
38
38
|
|
@@ -49,7 +49,7 @@ module Cucumber
|
|
49
49
|
expect( visitor ).to receive(:data_table) do |data_table|
|
50
50
|
expect( data_table.raw ).to eq [['x', 'y'], ['a', 'a replacement']]
|
51
51
|
end
|
52
|
-
row = ExamplesTable::Row.new({'arg' => 'replacement'}, 1, location)
|
52
|
+
row = ExamplesTable::Row.new({'arg' => 'replacement'}, 1, location, language)
|
53
53
|
step = outline_step.to_step(row)
|
54
54
|
step.describe_to(visitor)
|
55
55
|
end
|
@@ -67,7 +67,7 @@ module Cucumber
|
|
67
67
|
expect( visitor ).to receive(:doc_string) do |doc_string|
|
68
68
|
expect( doc_string.content ).to eq "a replacement that needs replacing"
|
69
69
|
end
|
70
|
-
row = ExamplesTable::Row.new({'arg' => 'replacement'}, 1, location)
|
70
|
+
row = ExamplesTable::Row.new({'arg' => 'replacement'}, 1, location, language)
|
71
71
|
step = outline_step.to_step(row)
|
72
72
|
step.describe_to(visitor)
|
73
73
|
end
|
@@ -27,6 +27,24 @@ module Cucumber
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
RSpec::Matchers.define :a_null_feature do
|
31
|
+
match do |actual|
|
32
|
+
allow( visitor ).to receive(:feature).and_throw
|
33
|
+
|
34
|
+
actual.describe_to( visitor )
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
context "for empty files" do
|
39
|
+
let(:source) { Gherkin::Document.new(path, '') }
|
40
|
+
let(:path) { 'path_to/the.feature' }
|
41
|
+
|
42
|
+
it "creates a NullFeature" do
|
43
|
+
expect( receiver ).to receive(:feature).with(a_null_feature)
|
44
|
+
parse
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
30
48
|
include Writer
|
31
49
|
def self.source(&block)
|
32
50
|
let(:source) { gherkin(&block) }
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'cucumber/core/test/action'
|
2
|
+
require 'cucumber/core/test/duration_matcher'
|
2
3
|
|
3
4
|
module Cucumber
|
4
5
|
module Core
|
@@ -76,13 +77,13 @@ module Cucumber
|
|
76
77
|
it "records the nanoseconds duration of the execution on the result" do
|
77
78
|
mapping = Action.new { }
|
78
79
|
duration = mapping.execute(last_result).duration
|
79
|
-
expect( duration ).to
|
80
|
+
expect( duration ).to be_duration 1
|
80
81
|
end
|
81
82
|
|
82
83
|
it "records the duration of a failed execution" do
|
83
84
|
mapping = Action.new { raise StandardError }
|
84
85
|
duration = mapping.execute(last_result).duration
|
85
|
-
expect( duration ).to
|
86
|
+
expect( duration ).to be_duration 1
|
86
87
|
end
|
87
88
|
end
|
88
89
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
require 'cucumber/core/test/result'
|
3
|
+
require 'rspec/expectations'
|
4
|
+
|
5
|
+
module Cucumber::Core::Test
|
6
|
+
RSpec::Matchers.define :be_duration do |expected|
|
7
|
+
match do |actual|
|
8
|
+
actual.tap { |duration| @nanoseconds = duration.nanoseconds }
|
9
|
+
@nanoseconds == expected
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
RSpec::Matchers.define :an_unknown_duration do
|
14
|
+
match do |actual|
|
15
|
+
actual.tap { raise "#tap block was executed, not an UnknownDuration" }
|
16
|
+
expect(actual).to respond_to(:nanoseconds)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -97,15 +97,19 @@ module Cucumber
|
|
97
97
|
it "adds hooks in the right order" do
|
98
98
|
log = double
|
99
99
|
allow(mappings).to receive(:test_case) do |test_case, mapper|
|
100
|
-
mapper.before { log.
|
101
|
-
mapper.
|
100
|
+
mapper.before { log.before_hook_1 }
|
101
|
+
mapper.before { log.before_hook_2 }
|
102
|
+
mapper.after { log.after_hook_1 }
|
103
|
+
mapper.after { log.after_hook_2 }
|
102
104
|
end
|
103
|
-
mapped_step = test_step.with_mapping { log.
|
105
|
+
mapped_step = test_step.with_mapping { log.step_1 }
|
104
106
|
test_case = Case.new([mapped_step], source)
|
105
107
|
|
106
|
-
expect( log ).to receive(:
|
107
|
-
expect( log ).to receive(:
|
108
|
-
expect( log ).to receive(:
|
108
|
+
expect( log ).to receive(:before_hook_1).ordered
|
109
|
+
expect( log ).to receive(:before_hook_2).ordered
|
110
|
+
expect( log ).to receive(:step_1).ordered
|
111
|
+
expect( log ).to receive(:after_hook_2).ordered
|
112
|
+
expect( log ).to receive(:after_hook_1).ordered
|
109
113
|
|
110
114
|
allow(receiver).to receive(:test_case).and_yield(receiver)
|
111
115
|
allow(receiver).to receive(:test_step) do |test_step|
|
@@ -128,7 +132,7 @@ module Cucumber
|
|
128
132
|
expect( scenario ).to receive(:describe_to)
|
129
133
|
expect( visitor ).to receive(:before_hook) do |hook, hook_args|
|
130
134
|
expect( args ).to eq(hook_args)
|
131
|
-
expect( hook.location.to_s ).to eq("#{__FILE__}:
|
135
|
+
expect( hook.location.to_s ).to eq("#{__FILE__}:125")
|
132
136
|
end
|
133
137
|
test_step.describe_source_to(visitor, args)
|
134
138
|
end
|
@@ -148,7 +152,7 @@ module Cucumber
|
|
148
152
|
expect( scenario ).to receive(:describe_to)
|
149
153
|
expect( visitor ).to receive(:after_hook) do |hook, hook_args|
|
150
154
|
expect( args ).to eq(hook_args)
|
151
|
-
expect( hook.location.to_s ).to eq("#{__FILE__}:
|
155
|
+
expect( hook.location.to_s ).to eq("#{__FILE__}:145")
|
152
156
|
end
|
153
157
|
test_step.describe_source_to(visitor, args)
|
154
158
|
end
|
@@ -168,7 +172,24 @@ module Cucumber
|
|
168
172
|
expect( visitor ).to receive(:step).ordered
|
169
173
|
expect( visitor ).to receive(:after_step_hook) do |hook, hook_args|
|
170
174
|
expect( args ).to eq(hook_args)
|
171
|
-
expect( hook.location.to_s ).to eq("#{__FILE__}:
|
175
|
+
expect( hook.location.to_s ).to eq("#{__FILE__}:164")
|
176
|
+
end.once.ordered
|
177
|
+
expect( visitor ).to receive(:step).ordered
|
178
|
+
test_case.describe_to mapper
|
179
|
+
end
|
180
|
+
|
181
|
+
it "prepends before_step hooks to the test step" do
|
182
|
+
allow(mappings).to receive(:test_step) do |test_step, mapper|
|
183
|
+
mapper.before {}
|
184
|
+
end
|
185
|
+
args = double('args')
|
186
|
+
visitor = double('visitor')
|
187
|
+
allow(receiver).to receive(:test_case) do |test_case|
|
188
|
+
test_case.test_steps.first.describe_source_to(visitor, args)
|
189
|
+
end
|
190
|
+
expect( visitor ).to receive(:before_step_hook) do |hook, hook_args|
|
191
|
+
expect( args ).to eq(hook_args)
|
192
|
+
expect( hook.location.to_s ).to eq("#{__FILE__}:183")
|
172
193
|
end.once.ordered
|
173
194
|
expect( visitor ).to receive(:step).ordered
|
174
195
|
test_case.describe_to mapper
|
@@ -180,4 +201,3 @@ module Cucumber
|
|
180
201
|
end
|
181
202
|
end
|
182
203
|
end
|
183
|
-
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
require 'cucumber/core/test/result'
|
3
|
+
require 'cucumber/core/test/duration_matcher'
|
3
4
|
|
4
5
|
module Cucumber::Core::Test
|
5
6
|
describe Result do
|
@@ -9,7 +10,7 @@ module Cucumber::Core::Test
|
|
9
10
|
|
10
11
|
describe Result::Passed do
|
11
12
|
subject(:result) { Result::Passed.new(duration) }
|
12
|
-
let(:duration) { 1 * 1000 * 1000 }
|
13
|
+
let(:duration) { Result::Duration.new(1 * 1000 * 1000) }
|
13
14
|
|
14
15
|
it "describes itself to a visitor" do
|
15
16
|
expect( visitor ).to receive(:passed).with(args)
|
@@ -38,7 +39,7 @@ module Cucumber::Core::Test
|
|
38
39
|
|
39
40
|
describe Result::Failed do
|
40
41
|
subject(:result) { Result::Failed.new(duration, exception) }
|
41
|
-
let(:duration) { 1 * 1000 * 1000 }
|
42
|
+
let(:duration) { Result::Duration.new(1 * 1000 * 1000) }
|
42
43
|
let(:exception) { StandardError.new("error message") }
|
43
44
|
|
44
45
|
it "describes itself to a visitor" do
|
@@ -84,6 +85,7 @@ module Cucumber::Core::Test
|
|
84
85
|
|
85
86
|
it "describes itself to a visitor" do
|
86
87
|
expect( visitor ).to receive(:undefined).with(args)
|
88
|
+
expect( visitor ).to receive(:duration).with(an_unknown_duration, args)
|
87
89
|
result.describe_to(visitor, args)
|
88
90
|
end
|
89
91
|
|
@@ -99,6 +101,7 @@ module Cucumber::Core::Test
|
|
99
101
|
|
100
102
|
it "describes itself to a visitor" do
|
101
103
|
expect( visitor ).to receive(:skipped).with(args)
|
104
|
+
expect( visitor ).to receive(:duration).with(an_unknown_duration, args)
|
102
105
|
result.describe_to(visitor, args)
|
103
106
|
end
|
104
107
|
|
@@ -111,8 +114,8 @@ module Cucumber::Core::Test
|
|
111
114
|
|
112
115
|
describe Result::Summary do
|
113
116
|
let(:summary) { Result::Summary.new }
|
114
|
-
let(:failed) { Result::Failed.new(10, exception) }
|
115
|
-
let(:passed) { Result::Passed.new(11) }
|
117
|
+
let(:failed) { Result::Failed.new(Result::Duration.new(10), exception) }
|
118
|
+
let(:passed) { Result::Passed.new(Result::Duration.new(11)) }
|
116
119
|
let(:skipped) { Result::Skipped.new }
|
117
120
|
let(:unknown) { Result::Unknown.new }
|
118
121
|
let(:undefined) { Result::Undefined.new }
|
@@ -142,6 +145,23 @@ module Cucumber::Core::Test
|
|
142
145
|
expect( summary.total ).to eq 1
|
143
146
|
end
|
144
147
|
|
148
|
+
it "counts abitrary raisable results" do
|
149
|
+
flickering = Class.new(Result::Raisable) do
|
150
|
+
def describe_to(visitor, *args)
|
151
|
+
visitor.flickering(*args)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
flickering.new.describe_to summary
|
156
|
+
expect( summary.total_flickering ).to eq 1
|
157
|
+
expect( summary.total ).to eq 1
|
158
|
+
end
|
159
|
+
|
160
|
+
it "returns zero for a status where no messges have been received" do
|
161
|
+
expect( summary.total_passed ).to eq 0
|
162
|
+
expect( summary.total_ponies ).to eq 0
|
163
|
+
end
|
164
|
+
|
145
165
|
it "doesn't count unknown results" do
|
146
166
|
unknown.describe_to summary
|
147
167
|
expect( summary.total ).to eq 0
|
@@ -158,7 +178,8 @@ module Cucumber::Core::Test
|
|
158
178
|
|
159
179
|
it "records durations" do
|
160
180
|
[passed, failed].each { |r| r.describe_to summary }
|
161
|
-
expect( summary.durations ).to
|
181
|
+
expect( summary.durations[0] ).to be_duration 11
|
182
|
+
expect( summary.durations[1] ).to be_duration 10
|
162
183
|
end
|
163
184
|
|
164
185
|
it "records exceptions" do
|
@@ -166,5 +187,26 @@ module Cucumber::Core::Test
|
|
166
187
|
expect( summary.exceptions ).to eq [exception]
|
167
188
|
end
|
168
189
|
end
|
190
|
+
|
191
|
+
describe Result::Duration do
|
192
|
+
subject(:duration) { Result::Duration.new(10) }
|
193
|
+
|
194
|
+
it "#nanoseconds can be accessed in #tap" do
|
195
|
+
expect( duration.tap { |duration| @duration = duration.nanoseconds } ).to eq duration
|
196
|
+
expect( @duration ).to eq 10
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
describe Result::UnknownDuration do
|
201
|
+
subject(:duration) { Result::UnknownDuration.new }
|
202
|
+
|
203
|
+
it "#tap does not execute the passed block" do
|
204
|
+
expect( duration.tap { raise "tap executed block" } ).to eq duration
|
205
|
+
end
|
206
|
+
|
207
|
+
it "accessing #nanoseconds outside #tap block raises exception" do
|
208
|
+
expect { duration.nanoseconds }.to raise_error(RuntimeError)
|
209
|
+
end
|
210
|
+
end
|
169
211
|
end
|
170
212
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'cucumber/core/test/runner'
|
2
2
|
require 'cucumber/core/test/case'
|
3
3
|
require 'cucumber/core/test/step'
|
4
|
+
require 'cucumber/core/test/duration_matcher'
|
4
5
|
|
5
6
|
module Cucumber::Core::Test
|
6
7
|
describe Runner do
|
@@ -33,7 +34,7 @@ module Cucumber::Core::Test
|
|
33
34
|
|
34
35
|
it "records the nanoseconds duration of the execution on the result" do
|
35
36
|
expect( report ).to receive(:after_test_case) do |reported_test_case, result|
|
36
|
-
expect( result.duration ).to
|
37
|
+
expect( result.duration ).to be_duration 1
|
37
38
|
end
|
38
39
|
test_case.describe_to runner
|
39
40
|
end
|
@@ -44,7 +45,7 @@ module Cucumber::Core::Test
|
|
44
45
|
|
45
46
|
it "records the duration" do
|
46
47
|
expect( report ).to receive(:after_test_case) do |reported_test_case, result|
|
47
|
-
expect( result.duration ).to
|
48
|
+
expect( result.duration ).to be_duration 1
|
48
49
|
end
|
49
50
|
test_case.describe_to runner
|
50
51
|
end
|
@@ -1,9 +1,22 @@
|
|
1
1
|
require 'cucumber/core/test/timer'
|
2
|
+
require 'cucumber/core/test/duration_matcher'
|
2
3
|
|
3
4
|
module Cucumber
|
4
5
|
module Core
|
5
6
|
module Test
|
6
7
|
describe Timer do
|
8
|
+
before do
|
9
|
+
time = double
|
10
|
+
allow( Time ).to receive(:now) { time }
|
11
|
+
allow( time ).to receive(:nsec).and_return(946752000, 946752001)
|
12
|
+
allow( time ).to receive(:to_i).and_return(1377009235, 1377009235)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "returns a Result::Duration object" do
|
16
|
+
timer = Timer.new.start
|
17
|
+
expect( timer.duration ).to be_duration 1
|
18
|
+
end
|
19
|
+
|
7
20
|
it "would be slow to test" do
|
8
21
|
# so we won't
|
9
22
|
end
|
data/spec/cucumber/core_spec.rb
CHANGED
@@ -2,32 +2,13 @@ require 'report_api_spy'
|
|
2
2
|
require 'cucumber/core'
|
3
3
|
require 'cucumber/core/gherkin/writer'
|
4
4
|
require 'cucumber/core/platform'
|
5
|
+
require 'cucumber/core/report/summary'
|
5
6
|
|
6
7
|
module Cucumber
|
7
8
|
describe Core do
|
8
9
|
include Core
|
9
10
|
include Core::Gherkin::Writer
|
10
11
|
|
11
|
-
describe "parsing Gherkin" do
|
12
|
-
it "calls the compiler with a valid AST" do
|
13
|
-
compiler = double(done: nil)
|
14
|
-
expect( compiler ).to receive(:feature) do |feature|
|
15
|
-
expect( feature ).to respond_to(:describe_to)
|
16
|
-
expect( feature ).to be_an_instance_of(Core::Ast::Feature)
|
17
|
-
end
|
18
|
-
|
19
|
-
gherkin = gherkin do
|
20
|
-
feature do
|
21
|
-
scenario do
|
22
|
-
step
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
parse([gherkin], compiler)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
12
|
describe "compiling features to a test suite" do
|
32
13
|
|
33
14
|
it "compiles two scenarios into two test cases" do
|
@@ -216,30 +197,6 @@ module Cucumber
|
|
216
197
|
end
|
217
198
|
|
218
199
|
describe "executing a test suite" do
|
219
|
-
class SummaryReport
|
220
|
-
attr_reader :test_cases, :test_steps
|
221
|
-
|
222
|
-
def initialize
|
223
|
-
@test_cases = Core::Test::Result::Summary.new
|
224
|
-
@test_steps = Core::Test::Result::Summary.new
|
225
|
-
end
|
226
|
-
|
227
|
-
def before_test_case(*)
|
228
|
-
yield if block_given?
|
229
|
-
end
|
230
|
-
|
231
|
-
def after_test_case(test_case, result)
|
232
|
-
result.describe_to test_cases
|
233
|
-
end
|
234
|
-
|
235
|
-
def after_test_step(test_step, result)
|
236
|
-
result.describe_to test_steps
|
237
|
-
end
|
238
|
-
|
239
|
-
def method_missing(*)
|
240
|
-
end
|
241
|
-
end
|
242
|
-
|
243
200
|
context "without hooks" do
|
244
201
|
class StepTestMappings
|
245
202
|
Failure = Class.new(StandardError)
|
@@ -270,7 +227,7 @@ module Cucumber
|
|
270
227
|
end
|
271
228
|
end
|
272
229
|
end
|
273
|
-
report =
|
230
|
+
report = Core::Report::Summary.new
|
274
231
|
mappings = StepTestMappings.new
|
275
232
|
|
276
233
|
execute [gherkin], mappings, report
|
@@ -363,7 +320,7 @@ module Cucumber
|
|
363
320
|
end
|
364
321
|
end
|
365
322
|
end
|
366
|
-
report =
|
323
|
+
report = Core::Report::Summary.new
|
367
324
|
mappings = HookTestMappings.new
|
368
325
|
|
369
326
|
execute [gherkin], mappings, report
|
@@ -440,7 +397,7 @@ module Cucumber
|
|
440
397
|
end
|
441
398
|
end
|
442
399
|
end
|
443
|
-
report =
|
400
|
+
report = Core::Report::Summary.new
|
444
401
|
mappings = AroundHookTestMappings.new
|
445
402
|
|
446
403
|
execute [gherkin], mappings, report
|
@@ -481,7 +438,7 @@ module Cucumber
|
|
481
438
|
end
|
482
439
|
end
|
483
440
|
end
|
484
|
-
report =
|
441
|
+
report = Core::Report::Summary.new
|
485
442
|
mappings = HookTestMappings.new
|
486
443
|
|
487
444
|
execute [gherkin], mappings, report, [[Cucumber::Core::Test::TagFilter, ['@a']]]
|
@@ -500,13 +457,40 @@ module Cucumber
|
|
500
457
|
end
|
501
458
|
end
|
502
459
|
end
|
503
|
-
report =
|
460
|
+
report = Core::Report::Summary.new
|
504
461
|
mappings = HookTestMappings.new
|
505
462
|
|
506
463
|
execute [gherkin], mappings, report, [[Cucumber::Core::Test::NameFilter, [[/scenario/]]]]
|
507
464
|
|
508
465
|
expect( report.test_cases.total ).to eq 1
|
509
466
|
end
|
467
|
+
|
468
|
+
it "filters test cases by filename" do
|
469
|
+
documents = []
|
470
|
+
documents << gherkin("some.feature") do
|
471
|
+
feature 'some feature' do
|
472
|
+
scenario 'some scenario' do
|
473
|
+
step 'missing'
|
474
|
+
end
|
475
|
+
end
|
476
|
+
end
|
477
|
+
documents << gherkin("other.feature") do
|
478
|
+
feature 'other feature' do
|
479
|
+
scenario 'other scenario' do
|
480
|
+
step 'missing'
|
481
|
+
end
|
482
|
+
end
|
483
|
+
end
|
484
|
+
|
485
|
+
report = Core::Report::Summary.new
|
486
|
+
mappings = HookTestMappings.new
|
487
|
+
some_feature = Cucumber::Core::Ast::Location.new("some.feature")
|
488
|
+
filters = [[ Cucumber::Core::Test::LocationsFilter, [[some_feature]] ]]
|
489
|
+
|
490
|
+
execute documents, mappings, report, filters
|
491
|
+
|
492
|
+
expect( report.test_cases.total ).to eq 1
|
493
|
+
end
|
510
494
|
end
|
511
495
|
end
|
512
496
|
end
|