cucumber-core 1.1.3 → 1.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/HISTORY.md +16 -2
- data/lib/cucumber/core/ast/background.rb +6 -7
- data/lib/cucumber/core/ast/comment.rb +1 -1
- data/lib/cucumber/core/ast/doc_string.rb +0 -1
- data/lib/cucumber/core/ast/examples_table.rb +12 -9
- data/lib/cucumber/core/ast/feature.rb +3 -4
- data/lib/cucumber/core/ast/names.rb +4 -8
- data/lib/cucumber/core/ast/outline_step.rb +4 -4
- data/lib/cucumber/core/ast/scenario.rb +4 -4
- data/lib/cucumber/core/ast/scenario_outline.rb +4 -5
- data/lib/cucumber/core/ast/step.rb +5 -5
- data/lib/cucumber/core/gherkin/ast_builder.rb +12 -2
- data/lib/cucumber/core/test/action.rb +9 -2
- data/lib/cucumber/core/test/result.rb +65 -13
- data/lib/cucumber/core/test/runner.rb +2 -0
- data/lib/cucumber/core/test/step.rb +7 -3
- data/lib/cucumber/core/version.rb +1 -1
- data/spec/cucumber/core/ast/examples_table_spec.rb +26 -13
- data/spec/cucumber/core/ast/outline_step_spec.rb +13 -6
- data/spec/cucumber/core/ast/step_spec.rb +28 -15
- data/spec/cucumber/core/test/action_spec.rb +30 -1
- data/spec/cucumber/core/test/result_spec.rb +155 -25
- data/spec/cucumber/core/test/runner_spec.rb +54 -11
- data/spec/cucumber/core/test/step_spec.rb +17 -2
- metadata +4 -3
@@ -10,15 +10,16 @@ module Cucumber::Core::Test
|
|
10
10
|
let(:source) { [double('ast node', location: double)] }
|
11
11
|
let(:runner) { Runner.new(report) }
|
12
12
|
let(:report) { double.as_null_object }
|
13
|
-
let(:passing) { Step.new([
|
14
|
-
let(:failing) { Step.new([
|
15
|
-
let(:pending) { Step.new([
|
16
|
-
let(:skipping) { Step.new([
|
17
|
-
let(:undefined) { Step.new([
|
13
|
+
let(:passing) { Step.new([source]).with_action {} }
|
14
|
+
let(:failing) { Step.new([source]).with_action { raise exception } }
|
15
|
+
let(:pending) { Step.new([source]).with_action { raise Result::Pending.new("TODO") } }
|
16
|
+
let(:skipping) { Step.new([source]).with_action { raise Result::Skipped.new } }
|
17
|
+
let(:undefined) { Step.new([source]) }
|
18
18
|
let(:exception) { StandardError.new('test error') }
|
19
19
|
|
20
20
|
before do
|
21
21
|
allow(report).to receive(:before_test_case)
|
22
|
+
allow(source).to receive(:location)
|
22
23
|
end
|
23
24
|
|
24
25
|
context "reporting the duration of a test case" do
|
@@ -100,6 +101,24 @@ module Cucumber::Core::Test
|
|
100
101
|
expect( report ).to receive(:after_test_case) do |test_case, result|
|
101
102
|
expect( result ).to be_undefined
|
102
103
|
end
|
104
|
+
allow( undefined.source.last ).to receive(:name)
|
105
|
+
test_case.describe_to runner
|
106
|
+
end
|
107
|
+
|
108
|
+
it 'sets the message on the result' do
|
109
|
+
expect( report ).to receive(:after_test_case) do |test_case, result|
|
110
|
+
expect( result.message ).to eq("Undefined step: \"step name\"")
|
111
|
+
end
|
112
|
+
expect( undefined.source.last ).to receive(:name).and_return("step name")
|
113
|
+
test_case.describe_to runner
|
114
|
+
end
|
115
|
+
|
116
|
+
it 'appends the backtrace of the result' do
|
117
|
+
expect( report ).to receive(:after_test_case) do |test_case, result|
|
118
|
+
expect( result.backtrace ).to eq(["step line"])
|
119
|
+
end
|
120
|
+
expect( undefined.source.last ).to receive(:backtrace_line).and_return("step line")
|
121
|
+
allow( undefined.source.last ).to receive(:name)
|
103
122
|
test_case.describe_to runner
|
104
123
|
end
|
105
124
|
end
|
@@ -113,6 +132,14 @@ module Cucumber::Core::Test
|
|
113
132
|
end
|
114
133
|
test_case.describe_to runner
|
115
134
|
end
|
135
|
+
|
136
|
+
it 'appends the backtrace of the result' do
|
137
|
+
expect( report ).to receive(:after_test_case) do |test_case, result|
|
138
|
+
expect( result.backtrace.last ).to eq("step line")
|
139
|
+
end
|
140
|
+
expect( pending.source.last ).to receive(:backtrace_line).and_return("step line")
|
141
|
+
test_case.describe_to runner
|
142
|
+
end
|
116
143
|
end
|
117
144
|
|
118
145
|
context "a skipping step" do
|
@@ -124,6 +151,14 @@ module Cucumber::Core::Test
|
|
124
151
|
end
|
125
152
|
test_case.describe_to runner
|
126
153
|
end
|
154
|
+
|
155
|
+
it 'appends the backtrace of the result' do
|
156
|
+
expect( report ).to receive(:after_test_case) do |test_case, result|
|
157
|
+
expect( result.backtrace.last ).to eq("step line")
|
158
|
+
end
|
159
|
+
expect( skipping.source.last ).to receive(:backtrace_line).and_return("step line")
|
160
|
+
test_case.describe_to runner
|
161
|
+
end
|
127
162
|
end
|
128
163
|
|
129
164
|
context 'that fail' do
|
@@ -135,6 +170,14 @@ module Cucumber::Core::Test
|
|
135
170
|
end
|
136
171
|
test_case.describe_to runner
|
137
172
|
end
|
173
|
+
|
174
|
+
it 'appends the backtrace of the exception of the result' do
|
175
|
+
expect( report ).to receive(:after_test_case) do |test_case, result|
|
176
|
+
expect( result.exception.backtrace.last ).to eq("step line")
|
177
|
+
end
|
178
|
+
expect( failing.source.last ).to receive(:backtrace_line).and_return("step line")
|
179
|
+
test_case.describe_to runner
|
180
|
+
end
|
138
181
|
end
|
139
182
|
|
140
183
|
context 'where the first step fails' do
|
@@ -202,8 +245,8 @@ module Cucumber::Core::Test
|
|
202
245
|
hook_mapping = UnskippableAction.new do |last_result|
|
203
246
|
result_spy = last_result
|
204
247
|
end
|
205
|
-
after_hook = Step.new([
|
206
|
-
failing_step = Step.new([
|
248
|
+
after_hook = Step.new([source], hook_mapping)
|
249
|
+
failing_step = Step.new([source]).with_action { fail }
|
207
250
|
test_case = Case.new([failing_step, after_hook], source)
|
208
251
|
test_case.describe_to runner
|
209
252
|
expect(result_spy).to be_failed
|
@@ -214,7 +257,7 @@ module Cucumber::Core::Test
|
|
214
257
|
context "with around hooks" do
|
215
258
|
it "passes normally when around hooks don't fail" do
|
216
259
|
around_hook = AroundHook.new { |block| block.call }
|
217
|
-
passing_step = Step.new([
|
260
|
+
passing_step = Step.new([source]).with_action {}
|
218
261
|
test_case = Case.new([passing_step], source, [around_hook])
|
219
262
|
expect(report).to receive(:after_test_case).with(test_case, anything) do |reported_test_case, result|
|
220
263
|
expect(result).to be_passed
|
@@ -224,7 +267,7 @@ module Cucumber::Core::Test
|
|
224
267
|
|
225
268
|
it "gets a failed result if the Around hook fails before the test case is run" do
|
226
269
|
around_hook = AroundHook.new { |block| raise exception }
|
227
|
-
passing_step = Step.new([
|
270
|
+
passing_step = Step.new([source]).with_action {}
|
228
271
|
test_case = Case.new([passing_step], source, [around_hook])
|
229
272
|
expect(report).to receive(:after_test_case).with(test_case, anything) do |reported_test_case, result|
|
230
273
|
expect(result).to be_failed
|
@@ -235,7 +278,7 @@ module Cucumber::Core::Test
|
|
235
278
|
|
236
279
|
it "gets a failed result if the Around hook fails after the test case is run" do
|
237
280
|
around_hook = AroundHook.new { |block| block.call; raise exception }
|
238
|
-
passing_step = Step.new([
|
281
|
+
passing_step = Step.new([source]).with_action {}
|
239
282
|
test_case = Case.new([passing_step], source, [around_hook])
|
240
283
|
expect(report).to receive(:after_test_case).with(test_case, anything) do |reported_test_case, result|
|
241
284
|
expect(result).to be_failed
|
@@ -246,7 +289,7 @@ module Cucumber::Core::Test
|
|
246
289
|
|
247
290
|
it "fails when a step fails if the around hook works" do
|
248
291
|
around_hook = AroundHook.new { |block| block.call }
|
249
|
-
failing_step = Step.new([
|
292
|
+
failing_step = Step.new([source]).with_action { raise exception }
|
250
293
|
test_case = Case.new([failing_step], source, [around_hook])
|
251
294
|
expect(report).to receive(:after_test_case).with(test_case, anything) do |reported_test_case, result|
|
252
295
|
expect(result).to be_failed
|
@@ -4,16 +4,21 @@ module Cucumber::Core::Test
|
|
4
4
|
describe Step do
|
5
5
|
|
6
6
|
describe "describing itself" do
|
7
|
+
let(:step_or_hook) { double }
|
8
|
+
before(:each) do
|
9
|
+
allow( step_or_hook ).to receive(:location)
|
10
|
+
end
|
11
|
+
|
7
12
|
it "describes itself to a visitor" do
|
8
13
|
visitor = double
|
9
14
|
args = double
|
10
|
-
test_step = Step.new([
|
15
|
+
test_step = Step.new([step_or_hook])
|
11
16
|
expect( visitor ).to receive(:test_step).with(test_step, args)
|
12
17
|
test_step.describe_to(visitor, args)
|
13
18
|
end
|
14
19
|
|
15
20
|
it "describes its source to a visitor" do
|
16
|
-
feature, scenario
|
21
|
+
feature, scenario = double, double
|
17
22
|
visitor = double
|
18
23
|
args = double
|
19
24
|
expect( feature ).to receive(:describe_to).with(visitor, args)
|
@@ -26,6 +31,9 @@ module Cucumber::Core::Test
|
|
26
31
|
|
27
32
|
describe "executing" do
|
28
33
|
let(:ast_step) { double }
|
34
|
+
before(:each) do
|
35
|
+
allow( ast_step ).to receive(:location)
|
36
|
+
end
|
29
37
|
|
30
38
|
it "passes arbitrary arguments to the action's block" do
|
31
39
|
args_spy = nil
|
@@ -72,5 +80,12 @@ module Cucumber::Core::Test
|
|
72
80
|
expect( test_step.location ).to eq location
|
73
81
|
end
|
74
82
|
|
83
|
+
it "exposes the location of the action as attribute" do
|
84
|
+
location = double
|
85
|
+
action = double(location: location)
|
86
|
+
test_step = Step.new([double], action)
|
87
|
+
expect( test_step.action_location ).to eq location
|
88
|
+
end
|
89
|
+
|
75
90
|
end
|
76
91
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aslak Hellesøy
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2015-
|
15
|
+
date: 2015-07-08 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: gherkin
|
@@ -218,7 +218,7 @@ rubyforge_project:
|
|
218
218
|
rubygems_version: 2.2.2
|
219
219
|
signing_key:
|
220
220
|
specification_version: 4
|
221
|
-
summary: cucumber-core-1.
|
221
|
+
summary: cucumber-core-1.2.0
|
222
222
|
test_files:
|
223
223
|
- spec/capture_warnings.rb
|
224
224
|
- spec/coverage.rb
|
@@ -245,3 +245,4 @@ test_files:
|
|
245
245
|
- spec/cucumber/core_spec.rb
|
246
246
|
- spec/readme_spec.rb
|
247
247
|
- spec/report_api_spy.rb
|
248
|
+
has_rdoc:
|