cucumber-core 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -334,6 +334,16 @@ module Cucumber
334
334
  location = Ast::Location.new(file, 18)
335
335
  expect( test_case.match_locations?([location]) ).to be_truthy
336
336
  end
337
+
338
+ it "matches a location at the end of the docstring" do
339
+ location = Ast::Location.new(file, 19)
340
+ expect( test_case.match_locations?([location]) ).to be_truthy
341
+ end
342
+
343
+ it "does not match a location after the docstring" do
344
+ location = Ast::Location.new(file, 20)
345
+ expect( test_case.match_locations?([location]) ).to be_falsy
346
+ end
337
347
  end
338
348
 
339
349
  context "with a table" do
@@ -1,6 +1,7 @@
1
1
  require 'cucumber/core/gherkin/writer'
2
2
  require 'cucumber/core'
3
3
  require 'cucumber/core/test/filters/locations_filter'
4
+ require 'timeout'
4
5
 
5
6
  module Cucumber::Core::Test
6
7
  describe LocationsFilter do
@@ -10,7 +11,7 @@ module Cucumber::Core::Test
10
11
  let(:receiver) { SpyReceiver.new }
11
12
 
12
13
  let(:doc) do
13
- gherkin do
14
+ gherkin('features/test.feature') do
14
15
  feature do
15
16
  scenario 'x' do
16
17
  step 'a step'
@@ -51,6 +52,44 @@ module Cucumber::Core::Test
51
52
  expect(receiver.test_case_locations).to eq ["features/test.feature:3"]
52
53
  end
53
54
 
55
+ num_features = 1
56
+ num_scenarios_per_feature = 300
57
+ context "under load" do
58
+ let(:docs) do
59
+ (1..num_features).map do |i|
60
+ gherkin("features/test_#{i}.feature") do
61
+ feature do
62
+ (1..num_scenarios_per_feature).each do |j|
63
+ scenario "scenario #{j}" do
64
+ step
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ num_locations = num_features
73
+ let(:locations) do
74
+ (1..num_locations).map do |i|
75
+ (1..num_scenarios_per_feature).map do |j|
76
+ line = 3 + (j - 1) * 3
77
+ Cucumber::Core::Ast::Location.new("features/test_#{i}.feature", line)
78
+ end
79
+ end.flatten
80
+ end
81
+
82
+ max_duration_ms = 10000
83
+ it "filters #{num_features * num_scenarios_per_feature} test cases within #{max_duration_ms}ms" do
84
+ filter = LocationsFilter.new(locations)
85
+ Timeout.timeout(max_duration_ms / 1000.0) do
86
+ compile docs, receiver, [filter]
87
+ end
88
+ expect(receiver.test_cases.length).to eq num_features * num_scenarios_per_feature
89
+ end
90
+
91
+ end
92
+
54
93
  class SpyReceiver
55
94
  def test_case(test_case)
56
95
  test_cases << test_case
@@ -63,8 +102,6 @@ module Cucumber::Core::Test
63
102
  test_cases.map(&:location).map(&:to_s)
64
103
  end
65
104
 
66
- private
67
-
68
105
  def test_cases
69
106
  @test_cases ||= []
70
107
  end
@@ -297,6 +297,22 @@ module Cucumber::Core::Test
297
297
  end
298
298
  test_case.describe_to runner
299
299
  end
300
+
301
+ it "sends after_test_step for a step interrupted by (a timeout in) the around hook" do
302
+ around_hook = AroundHook.new { |block| block.call; raise exception }
303
+ passing_step = Step.new([source]).with_action {}
304
+ test_case = Case.new([], source, [around_hook])
305
+ allow(runner).to receive(:running_test_step).and_return(passing_step)
306
+ expect(report).to receive(:after_test_step).with(passing_step, anything) do |reported_test_case, result|
307
+ expect(result).to be_failed
308
+ expect(result.exception).to eq exception
309
+ end
310
+ expect(report).to receive(:after_test_case).with(test_case, anything) do |reported_test_case, result|
311
+ expect(result).to be_failed
312
+ expect(result.exception).to eq exception
313
+ end
314
+ test_case.describe_to runner
315
+ end
300
316
  end
301
317
 
302
318
  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.2.0
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -12,22 +12,22 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2015-07-08 00:00:00.000000000 Z
15
+ date: 2015-09-11 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
- name: gherkin
18
+ name: gherkin3
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
21
  - - "~>"
22
22
  - !ruby/object:Gem::Version
23
- version: 2.12.0
23
+ version: 3.1.0
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - "~>"
29
29
  - !ruby/object:Gem::Version
30
- version: 2.12.0
30
+ version: 3.1.0
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: bundler
33
33
  requirement: !ruby/object:Gem::Requirement
@@ -153,6 +153,7 @@ files:
153
153
  - lib/cucumber/core/gherkin/ast_builder.rb
154
154
  - lib/cucumber/core/gherkin/document.rb
155
155
  - lib/cucumber/core/gherkin/parser.rb
156
+ - lib/cucumber/core/gherkin/tag_expression.rb
156
157
  - lib/cucumber/core/gherkin/writer.rb
157
158
  - lib/cucumber/core/gherkin/writer/helpers.rb
158
159
  - lib/cucumber/core/platform.rb
@@ -218,7 +219,7 @@ rubyforge_project:
218
219
  rubygems_version: 2.2.2
219
220
  signing_key:
220
221
  specification_version: 4
221
- summary: cucumber-core-1.2.0
222
+ summary: cucumber-core-1.3.0
222
223
  test_files:
223
224
  - spec/capture_warnings.rb
224
225
  - spec/coverage.rb