cucumber-core 1.0.0 → 1.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f2cd168ae1424fa32f265677b4a2dfc7ae18a94d
4
- data.tar.gz: ebbf8b1933b4bb5e7cc16bce682ee62c5887a19c
3
+ metadata.gz: a5c7dce2de4429c75212c41a7d68768df625b22e
4
+ data.tar.gz: a1b973e289c386411ec84f27cc83db1b2ad4e147
5
5
  SHA512:
6
- metadata.gz: 2ed2fa52877d2ddae9912e9a4db6c2c019bebd424709b759997826ef7d5e061d01a5a31c8f37829b33dc8ba32b9969b6003fc3d65eeaa5403af9845424fb613d
7
- data.tar.gz: c63b934c43c8e8e57869d8f52db24f4e1dd6fa6352c1a1e69569a290eb70f6a71f8a3ac37da0b7b7b208996e32b621f26698c1fda2470e763a7f4e5eab40bad6
6
+ metadata.gz: 20196a25adcfb5fe2bba86beb60ac8d1e8472e89b280add560da96737cb2e1bdb8b0c6a60e9438dc981a74669629dbb0f9336c34fcb502a8b55b5cffdfa92e0c
7
+ data.tar.gz: d01388ba71e8e2e09f7286d1425406db8f0d72b44805d49261eec7b6e0be2b934c10e6cc465f04a81893c2688f2293d7774bc9c330d1dcba26c9a174c79f132f
data/HISTORY.md CHANGED
@@ -1,4 +1,10 @@
1
- ## [In Git](https://github.com/cucumber/cucumber-ruby-core/compare/v1.0.0...master)
1
+ ## [In Git](https://github.com/cucumber/cucumber-ruby-core/compare/v1.1.0...master)
2
+
3
+ ## [In Git](https://github.com/cucumber/cucumber-ruby-core/compare/v1.0.0...v1.1.0)
4
+
5
+ ### New features
6
+
7
+ * LocationsFilter now sorts test cases as well as filtering them (@mattwynne)
2
8
 
3
9
  ## [v1.0.0](https://github.com/cucumber/cucumber-ruby-core/compare/v1.0.0.beta.4...v1.0.0)
4
10
 
@@ -50,7 +50,7 @@ module Cucumber
50
50
  if other.respond_to?(:to_str)
51
51
  return content == other.to_str
52
52
  end
53
- raise ArgumentError, "Can't compare a #{self.class.name} with a #{other.class.name}"
53
+ false
54
54
  end
55
55
 
56
56
  private
@@ -62,12 +62,7 @@ module Cucumber
62
62
  end
63
63
 
64
64
  def slurp_comments
65
- # TODO: I can't think of another way to handle this?
66
- # When we use the comments, we need to reset the collection
67
- # for the next element...
68
- slurped_comments = comment_lines.dup
69
- @comment_lines = nil
70
- slurped_comments
65
+ comment_lines.tap { @comment_lines = nil }
71
66
  end
72
67
  end
73
68
 
@@ -3,15 +3,39 @@ require 'cucumber/core/filter'
3
3
  module Cucumber
4
4
  module Core
5
5
  module Test
6
+
7
+ # Sorts and filters scenarios based on a list of locations
6
8
  class LocationsFilter < Filter.new(:locations)
7
9
 
8
10
  def test_case(test_case)
9
- if test_case.match_locations?(@locations)
10
- test_case.describe_to @receiver
11
+ test_cases << test_case
12
+ self
13
+ end
14
+
15
+ def done
16
+ sorted_test_cases.each do |test_case|
17
+ test_case.describe_to receiver
11
18
  end
19
+ receiver.done
12
20
  self
13
21
  end
14
22
 
23
+ private
24
+
25
+ def sorted_test_cases
26
+ locations.map { |location| test_cases_matching(location) }.flatten
27
+ end
28
+
29
+ def test_cases_matching(location)
30
+ test_cases.select do |test_case|
31
+ test_case.match_locations?([location])
32
+ end
33
+ end
34
+
35
+ def test_cases
36
+ @test_cases ||= []
37
+ end
38
+
15
39
  end
16
40
  end
17
41
  end
@@ -2,7 +2,7 @@ module Cucumber
2
2
  module Core
3
3
  class Version
4
4
  def self.to_s
5
- "1.0.0"
5
+ "1.1.0"
6
6
  end
7
7
  end
8
8
  end
@@ -45,8 +45,8 @@ module Cucumber
45
45
  expect( doc_string ).to eq 'foo'
46
46
  end
47
47
 
48
- it 'raises an error when compared with something odd' do
49
- expect { doc_string == 5 }.to raise_error(ArgumentError)
48
+ it 'returns false when compared with something odd' do
49
+ expect( doc_string ).not_to eq 5
50
50
  end
51
51
  end
52
52
 
@@ -0,0 +1,74 @@
1
+ require 'cucumber/core/gherkin/writer'
2
+ require 'cucumber/core'
3
+ require 'cucumber/core/test/filters/locations_filter'
4
+
5
+ module Cucumber::Core::Test
6
+ describe LocationsFilter do
7
+ include Cucumber::Core::Gherkin::Writer
8
+ include Cucumber::Core
9
+
10
+ let(:receiver) { SpyReceiver.new }
11
+
12
+ let(:doc) do
13
+ gherkin do
14
+ feature do
15
+ scenario 'x' do
16
+ step 'a step'
17
+ end
18
+
19
+ scenario 'y' do
20
+ step 'a step'
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ it "sorts by the given locations" do
27
+ locations = [
28
+ Cucumber::Core::Ast::Location.new('features/test.feature', 6),
29
+ Cucumber::Core::Ast::Location.new('features/test.feature', 3)
30
+ ]
31
+ filter = LocationsFilter.new(locations)
32
+ compile [doc], receiver, [filter]
33
+ expect(receiver.test_case_locations).to eq ["features/test.feature:6", "features/test.feature:3"]
34
+ end
35
+
36
+ it "works with wildcard locations" do
37
+ locations = [
38
+ Cucumber::Core::Ast::Location.new('features/test.feature')
39
+ ]
40
+ filter = LocationsFilter.new(locations)
41
+ compile [doc], receiver, [filter]
42
+ expect(receiver.test_case_locations).to eq ["features/test.feature:3", "features/test.feature:6"]
43
+ end
44
+
45
+ it "filters out scenarios that don't match" do
46
+ locations = [
47
+ Cucumber::Core::Ast::Location.new('features/test.feature', 3)
48
+ ]
49
+ filter = LocationsFilter.new(locations)
50
+ compile [doc], receiver, [filter]
51
+ expect(receiver.test_case_locations).to eq ["features/test.feature:3"]
52
+ end
53
+
54
+ class SpyReceiver
55
+ def test_case(test_case)
56
+ test_cases << test_case
57
+ end
58
+
59
+ def done
60
+ end
61
+
62
+ def test_case_locations
63
+ test_cases.map(&:location).map(&:to_s)
64
+ end
65
+
66
+ private
67
+
68
+ def test_cases
69
+ @test_cases ||= []
70
+ end
71
+
72
+ end
73
+ end
74
+ end
@@ -334,31 +334,6 @@ module Cucumber
334
334
  expect( report.test_cases.total ).to eq 1
335
335
  end
336
336
 
337
- it "filters test cases by filename" do
338
- documents = []
339
- documents << gherkin("some.feature") do
340
- feature 'some feature' do
341
- scenario 'some scenario' do
342
- step 'missing'
343
- end
344
- end
345
- end
346
- documents << gherkin("other.feature") do
347
- feature 'other feature' do
348
- scenario 'other scenario' do
349
- step 'missing'
350
- end
351
- end
352
- end
353
-
354
- report = Core::Report::Summary.new
355
- some_feature = Cucumber::Core::Ast::Location.new("some.feature")
356
- filters = [ Cucumber::Core::Test::LocationsFilter.new([some_feature]) ]
357
-
358
- execute documents, report, filters
359
-
360
- expect( report.test_cases.total ).to eq 1
361
- end
362
337
  end
363
338
  end
364
339
  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.0.0
4
+ version: 1.1.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-01-23 00:00:00.000000000 Z
15
+ date: 2015-02-08 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: gherkin
@@ -184,6 +184,7 @@ files:
184
184
  - spec/cucumber/core/test/action_spec.rb
185
185
  - spec/cucumber/core/test/case_spec.rb
186
186
  - spec/cucumber/core/test/duration_matcher.rb
187
+ - spec/cucumber/core/test/filters/locations_filter_spec.rb
187
188
  - spec/cucumber/core/test/result_spec.rb
188
189
  - spec/cucumber/core/test/runner_spec.rb
189
190
  - spec/cucumber/core/test/step_spec.rb
@@ -212,10 +213,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
213
  version: '0'
213
214
  requirements: []
214
215
  rubyforge_project:
215
- rubygems_version: 2.2.2
216
+ rubygems_version: 2.4.5
216
217
  signing_key:
217
218
  specification_version: 4
218
- summary: cucumber-core-1.0.0
219
+ summary: cucumber-core-1.1.0
219
220
  test_files:
220
221
  - spec/capture_warnings.rb
221
222
  - spec/coverage.rb
@@ -232,6 +233,7 @@ test_files:
232
233
  - spec/cucumber/core/test/action_spec.rb
233
234
  - spec/cucumber/core/test/case_spec.rb
234
235
  - spec/cucumber/core/test/duration_matcher.rb
236
+ - spec/cucumber/core/test/filters/locations_filter_spec.rb
235
237
  - spec/cucumber/core/test/result_spec.rb
236
238
  - spec/cucumber/core/test/runner_spec.rb
237
239
  - spec/cucumber/core/test/step_spec.rb
@@ -239,3 +241,4 @@ test_files:
239
241
  - spec/cucumber/core_spec.rb
240
242
  - spec/readme_spec.rb
241
243
  - spec/report_api_spy.rb
244
+ has_rdoc: