cucumber-core 11.0.0 → 12.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 (35) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +212 -290
  3. data/README.md +3 -3
  4. data/lib/cucumber/core/event.rb +1 -1
  5. data/lib/cucumber/core/test/case.rb +11 -1
  6. data/lib/cucumber/core/test/data_table.rb +4 -0
  7. data/lib/cucumber/core/test/doc_string.rb +4 -1
  8. data/lib/cucumber/core/test/empty_multiline_argument.rb +2 -2
  9. data/lib/cucumber/core/test/filters/locations_filter.rb +1 -1
  10. data/lib/cucumber/core/test/location.rb +7 -0
  11. data/lib/cucumber/core/test/step.rb +4 -0
  12. metadata +55 -98
  13. data/lib/cucumber/core/version.rb +0 -10
  14. data/spec/coverage.rb +0 -12
  15. data/spec/cucumber/core/compiler_spec.rb +0 -241
  16. data/spec/cucumber/core/event_bus_spec.rb +0 -163
  17. data/spec/cucumber/core/event_spec.rb +0 -40
  18. data/spec/cucumber/core/filter_spec.rb +0 -101
  19. data/spec/cucumber/core/gherkin/parser_spec.rb +0 -162
  20. data/spec/cucumber/core/gherkin/writer_spec.rb +0 -332
  21. data/spec/cucumber/core/report/summary_spec.rb +0 -178
  22. data/spec/cucumber/core/test/action_spec.rb +0 -153
  23. data/spec/cucumber/core/test/case_spec.rb +0 -125
  24. data/spec/cucumber/core/test/data_table_spec.rb +0 -79
  25. data/spec/cucumber/core/test/doc_string_spec.rb +0 -111
  26. data/spec/cucumber/core/test/duration_matcher.rb +0 -20
  27. data/spec/cucumber/core/test/empty_multiline_argument_spec.rb +0 -28
  28. data/spec/cucumber/core/test/filters/locations_filter_spec.rb +0 -271
  29. data/spec/cucumber/core/test/location_spec.rb +0 -129
  30. data/spec/cucumber/core/test/result_spec.rb +0 -504
  31. data/spec/cucumber/core/test/runner_spec.rb +0 -320
  32. data/spec/cucumber/core/test/step_spec.rb +0 -88
  33. data/spec/cucumber/core/test/timer_spec.rb +0 -25
  34. data/spec/cucumber/core_spec.rb +0 -262
  35. data/spec/report_api_spy.rb +0 -25
@@ -80,6 +80,10 @@ module Cucumber
80
80
  self.class.new(new_raw)
81
81
  end
82
82
 
83
+ def lines_count
84
+ raw.count
85
+ end
86
+
83
87
  def ==(other)
84
88
  other.class == self.class && raw == other.raw
85
89
  end
@@ -50,6 +50,10 @@ module Cucumber
50
50
  self
51
51
  end
52
52
 
53
+ def lines_count
54
+ lines.count + 2
55
+ end
56
+
53
57
  def ==(other)
54
58
  if other.respond_to?(:content_type)
55
59
  return false unless content_type == other.content_type
@@ -68,7 +72,6 @@ module Cucumber
68
72
  %{ """>}
69
73
  ].join("\n")
70
74
  end
71
-
72
75
  end
73
76
  end
74
77
  end
@@ -19,8 +19,8 @@ module Cucumber
19
19
  self
20
20
  end
21
21
 
22
- def all_locations
23
- []
22
+ def lines_count
23
+ 0
24
24
  end
25
25
 
26
26
  def inspect
@@ -26,7 +26,7 @@ module Cucumber
26
26
  def sorted_test_cases
27
27
  filter_locations.map { |filter_location|
28
28
  test_cases[filter_location.file].select { |test_case|
29
- filter_location.match?(test_case.location)
29
+ test_case.match_locations?([filter_location])
30
30
  }
31
31
  }.flatten.uniq
32
32
  end
@@ -79,6 +79,13 @@ module Cucumber
79
79
  to_s
80
80
  end
81
81
 
82
+ def merge(multiline_arg)
83
+ new_lines = (0..multiline_arg.lines_count).map do |offset|
84
+ lines.min + offset
85
+ end
86
+ Location.new(file, new_lines)
87
+ end
88
+
82
89
  def on_line(new_line)
83
90
  Location.new(file, new_line)
84
91
  end
@@ -51,6 +51,10 @@ module Cucumber
51
51
  @action.location
52
52
  end
53
53
 
54
+ def matching_locations
55
+ [location.merge(multiline_arg)]
56
+ end
57
+
54
58
  def inspect
55
59
  "#<#{self.class}: #{location}>"
56
60
  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: 11.0.0
4
+ version: 12.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -12,88 +12,68 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2022-05-18 00:00:00.000000000 Z
15
+ date: 2023-09-06 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: cucumber-gherkin
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - "~>"
22
- - !ruby/object:Gem::Version
23
- version: '23.0'
24
21
  - - ">="
25
22
  - !ruby/object:Gem::Version
26
- version: 23.0.1
23
+ version: '25'
24
+ - - "<"
25
+ - !ruby/object:Gem::Version
26
+ version: '27'
27
27
  type: :runtime
28
28
  prerelease: false
29
29
  version_requirements: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '23.0'
34
31
  - - ">="
35
32
  - !ruby/object:Gem::Version
36
- version: 23.0.1
33
+ version: '25'
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '27'
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: cucumber-messages
39
39
  requirement: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - "~>"
42
- - !ruby/object:Gem::Version
43
- version: '18.0'
44
41
  - - ">="
45
42
  - !ruby/object:Gem::Version
46
- version: 18.0.0
43
+ version: '20'
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '23'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '18.0'
54
51
  - - ">="
55
52
  - !ruby/object:Gem::Version
56
- version: 18.0.0
53
+ version: '20'
54
+ - - "<"
55
+ - !ruby/object:Gem::Version
56
+ version: '23'
57
57
  - !ruby/object:Gem::Dependency
58
58
  name: cucumber-tag-expressions
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - "~>"
62
62
  - !ruby/object:Gem::Version
63
- version: '4.1'
63
+ version: '5.0'
64
64
  - - ">="
65
65
  - !ruby/object:Gem::Version
66
- version: 4.1.0
66
+ version: 5.0.4
67
67
  type: :runtime
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '4.1'
73
+ version: '5.0'
74
74
  - - ">="
75
75
  - !ruby/object:Gem::Version
76
- version: 4.1.0
77
- - !ruby/object:Gem::Dependency
78
- name: coveralls
79
- requirement: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '0.8'
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: 0.8.23
87
- type: :development
88
- prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - "~>"
92
- - !ruby/object:Gem::Version
93
- version: '0.8'
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: 0.8.23
76
+ version: 5.0.4
97
77
  - !ruby/object:Gem::Dependency
98
78
  name: rake
99
79
  requirement: !ruby/object:Gem::Requirement
@@ -138,22 +118,44 @@ dependencies:
138
118
  name: rubocop
139
119
  requirement: !ruby/object:Gem::Requirement
140
120
  requirements:
141
- - - "~>"
121
+ - - '='
142
122
  - !ruby/object:Gem::Version
143
- version: '1.29'
144
- - - ">="
123
+ version: '1.27'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - '='
145
129
  - !ruby/object:Gem::Version
146
- version: 1.29.1
130
+ version: '1.27'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubocop-rake
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - "~>"
136
+ - !ruby/object:Gem::Version
137
+ version: 0.6.0
147
138
  type: :development
148
139
  prerelease: false
149
140
  version_requirements: !ruby/object:Gem::Requirement
150
141
  requirements:
151
142
  - - "~>"
152
143
  - !ruby/object:Gem::Version
153
- version: '1.29'
154
- - - ">="
144
+ version: 0.6.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop-rspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - '='
150
+ - !ruby/object:Gem::Version
151
+ version: '2.8'
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - '='
155
157
  - !ruby/object:Gem::Version
156
- version: 1.29.1
158
+ version: '2.8'
157
159
  - !ruby/object:Gem::Dependency
158
160
  name: rubocop-packaging
159
161
  requirement: !ruby/object:Gem::Requirement
@@ -233,29 +235,6 @@ files:
233
235
  - lib/cucumber/core/test/step.rb
234
236
  - lib/cucumber/core/test/tag.rb
235
237
  - lib/cucumber/core/test/timer.rb
236
- - lib/cucumber/core/version.rb
237
- - spec/coverage.rb
238
- - spec/cucumber/core/compiler_spec.rb
239
- - spec/cucumber/core/event_bus_spec.rb
240
- - spec/cucumber/core/event_spec.rb
241
- - spec/cucumber/core/filter_spec.rb
242
- - spec/cucumber/core/gherkin/parser_spec.rb
243
- - spec/cucumber/core/gherkin/writer_spec.rb
244
- - spec/cucumber/core/report/summary_spec.rb
245
- - spec/cucumber/core/test/action_spec.rb
246
- - spec/cucumber/core/test/case_spec.rb
247
- - spec/cucumber/core/test/data_table_spec.rb
248
- - spec/cucumber/core/test/doc_string_spec.rb
249
- - spec/cucumber/core/test/duration_matcher.rb
250
- - spec/cucumber/core/test/empty_multiline_argument_spec.rb
251
- - spec/cucumber/core/test/filters/locations_filter_spec.rb
252
- - spec/cucumber/core/test/location_spec.rb
253
- - spec/cucumber/core/test/result_spec.rb
254
- - spec/cucumber/core/test/runner_spec.rb
255
- - spec/cucumber/core/test/step_spec.rb
256
- - spec/cucumber/core/test/timer_spec.rb
257
- - spec/cucumber/core_spec.rb
258
- - spec/report_api_spy.rb
259
238
  homepage: https://cucumber.io
260
239
  licenses:
261
240
  - MIT
@@ -274,37 +253,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
274
253
  requirements:
275
254
  - - ">="
276
255
  - !ruby/object:Gem::Version
277
- version: '2.3'
256
+ version: '2.5'
278
257
  required_rubygems_version: !ruby/object:Gem::Requirement
279
258
  requirements:
280
259
  - - ">="
281
260
  - !ruby/object:Gem::Version
282
261
  version: '0'
283
262
  requirements: []
284
- rubygems_version: 3.1.2
263
+ rubygems_version: 3.3.5
285
264
  signing_key:
286
265
  specification_version: 4
287
- summary: cucumber-core-11.0.0
288
- test_files:
289
- - spec/cucumber/core/filter_spec.rb
290
- - spec/cucumber/core/test/duration_matcher.rb
291
- - spec/cucumber/core/test/empty_multiline_argument_spec.rb
292
- - spec/cucumber/core/test/doc_string_spec.rb
293
- - spec/cucumber/core/test/data_table_spec.rb
294
- - spec/cucumber/core/test/timer_spec.rb
295
- - spec/cucumber/core/test/case_spec.rb
296
- - spec/cucumber/core/test/runner_spec.rb
297
- - spec/cucumber/core/test/action_spec.rb
298
- - spec/cucumber/core/test/filters/locations_filter_spec.rb
299
- - spec/cucumber/core/test/result_spec.rb
300
- - spec/cucumber/core/test/location_spec.rb
301
- - spec/cucumber/core/test/step_spec.rb
302
- - spec/cucumber/core/gherkin/parser_spec.rb
303
- - spec/cucumber/core/gherkin/writer_spec.rb
304
- - spec/cucumber/core/report/summary_spec.rb
305
- - spec/cucumber/core/event_spec.rb
306
- - spec/cucumber/core/event_bus_spec.rb
307
- - spec/cucumber/core/compiler_spec.rb
308
- - spec/cucumber/core_spec.rb
309
- - spec/report_api_spy.rb
310
- - spec/coverage.rb
266
+ summary: cucumber-core-12.0.0
267
+ test_files: []
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
- module Cucumber
3
- module Core
4
- class Version
5
- def self.to_s
6
- "11.0.0"
7
- end
8
- end
9
- end
10
- end
data/spec/coverage.rb DELETED
@@ -1,12 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'rubygems'
3
- require 'simplecov'
4
- formatters = [ SimpleCov::Formatter::HTMLFormatter ]
5
-
6
- if ENV['TRAVIS']
7
- require 'coveralls'
8
- formatters << Coveralls::SimpleCov::Formatter
9
- end
10
-
11
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new(formatters)
12
- SimpleCov.start
@@ -1,241 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'cucumber/core'
3
- require 'cucumber/core/compiler'
4
- require 'cucumber/core/gherkin/writer'
5
-
6
- module Cucumber::Core
7
- describe Compiler do
8
- include Gherkin::Writer
9
- include Cucumber::Core
10
-
11
- def self.stubs(*names)
12
- names.each do |name|
13
- let(name) { double(name.to_s) }
14
- end
15
- end
16
-
17
- it "compiles a feature with a single scenario" do
18
- gherkin_documents = [
19
- gherkin do
20
- feature do
21
- scenario do
22
- step 'passing'
23
- end
24
- end
25
- end
26
- ]
27
- compile(gherkin_documents) do |visitor|
28
- expect( visitor ).to receive(:test_case).once.ordered.and_yield(visitor)
29
- expect( visitor ).to receive(:test_step).once.ordered
30
- expect( visitor ).to receive(:done).once.ordered
31
- end
32
- end
33
-
34
- context "when the event_bus is provided" do
35
- let(:event_bus) { double }
36
-
37
- before do
38
- allow( event_bus ).to receive(:envelope)
39
- allow( event_bus ).to receive(:gherkin_source_parsed).and_return(nil)
40
- allow( event_bus ).to receive(:test_case_created).and_return(nil)
41
- allow( event_bus ).to receive(:test_step_created).and_return(nil)
42
- end
43
-
44
- it "emits a TestCaseCreated event with the created Test::Case and Pickle" do
45
- gherkin_documents = [
46
- gherkin do
47
- feature do
48
- scenario do
49
- step 'passing'
50
- end
51
- end
52
- end
53
- ]
54
-
55
- compile(gherkin_documents, event_bus) do |visitor|
56
- allow( visitor ).to receive(:test_case)
57
- allow( visitor ).to receive(:test_step)
58
- allow( visitor ).to receive(:done)
59
- allow( event_bus ).to receive(:envelope)
60
-
61
- expect( event_bus ).to receive(:test_case_created).once
62
- end
63
- end
64
-
65
- it "emits a TestStepCreated event with the created Test::Step and PickleStep" do
66
- gherkin_documents = [
67
- gherkin do
68
- feature do
69
- scenario do
70
- step 'passing'
71
- step 'passing'
72
- end
73
- end
74
- end
75
- ]
76
-
77
- compile(gherkin_documents, event_bus) do |visitor|
78
- allow( visitor ).to receive(:test_case)
79
- allow( visitor ).to receive(:test_step)
80
- allow( visitor ).to receive(:done)
81
- allow( event_bus ).to receive(:envelope)
82
-
83
- expect( event_bus ).to receive(:test_step_created).twice
84
- end
85
- end
86
- end
87
-
88
- it "compiles a feature with a background" do
89
- gherkin_documents = [
90
- gherkin do
91
- feature do
92
- background do
93
- step 'passing'
94
- end
95
-
96
- scenario do
97
- step 'passing'
98
- end
99
- end
100
- end
101
- ]
102
- compile(gherkin_documents) do |visitor|
103
- expect( visitor ).to receive(:test_case).once.ordered.and_yield(visitor)
104
- expect( visitor ).to receive(:test_step).exactly(2).times.ordered
105
- expect( visitor ).to receive(:done).once.ordered
106
- end
107
- end
108
-
109
- it "compiles multiple features" do
110
- gherkin_documents = [
111
- gherkin do
112
- feature do
113
- background do
114
- step 'passing'
115
- end
116
- scenario do
117
- step 'passing'
118
- end
119
- end
120
- end,
121
- gherkin do
122
- feature do
123
- background do
124
- step 'passing'
125
- end
126
- scenario do
127
- step 'passing'
128
- end
129
- end
130
- end
131
- ]
132
- compile(gherkin_documents) do |visitor|
133
- expect( visitor ).to receive(:test_case).once.ordered
134
- expect( visitor ).to receive(:test_step).twice.ordered
135
- expect( visitor ).to receive(:test_case).once.ordered
136
- expect( visitor ).to receive(:test_step).twice.ordered
137
- expect( visitor ).to receive(:done).once
138
- end
139
- end
140
-
141
- context "compiling scenario outlines" do
142
- it "compiles a scenario outline to test cases" do
143
- gherkin_documents = [
144
- gherkin do
145
- feature do
146
- background do
147
- step 'passing'
148
- end
149
-
150
- scenario_outline do
151
- step 'passing <arg>'
152
- step 'passing'
153
-
154
- examples 'examples 1' do
155
- row 'arg'
156
- row '1'
157
- row '2'
158
- end
159
-
160
- examples 'examples 2' do
161
- row 'arg'
162
- row 'a'
163
- end
164
- end
165
- end
166
- end
167
- ]
168
- compile(gherkin_documents) do |visitor|
169
- expect( visitor ).to receive(:test_case).exactly(3).times.and_yield(visitor)
170
- expect( visitor ).to receive(:test_step).exactly(9).times
171
- expect( visitor ).to receive(:done).once
172
- end
173
- end
174
-
175
- it 'replaces arguments correctly when generating test steps' do
176
- gherkin_documents = [
177
- gherkin do
178
- feature do
179
- scenario_outline do
180
- step 'passing <arg1> with <arg2>'
181
- step 'as well as <arg3>'
182
-
183
- examples do
184
- row 'arg1', 'arg2', 'arg3'
185
- row '1', '2', '3'
186
- end
187
- end
188
- end
189
- end
190
- ]
191
-
192
- compile(gherkin_documents) do |visitor|
193
- expect( visitor ).to receive(:test_step) do |test_step|
194
- expect(test_step.text).to eq 'passing 1 with 2'
195
- end.once.ordered
196
-
197
- expect( visitor ).to receive(:test_step) do |test_step|
198
- expect(test_step.text).to eq 'as well as 3'
199
- end.once.ordered
200
-
201
- expect( visitor ).to receive(:done).once.ordered
202
- end
203
- end
204
- end
205
-
206
- context 'empty scenarios' do
207
- it 'does create test cases for them' do
208
- gherkin_documents = [
209
- gherkin do
210
- feature do
211
- scenario do
212
- end
213
- end
214
- end
215
- ]
216
- compile(gherkin_documents) do |visitor|
217
- expect( visitor ).to receive(:test_case).once.ordered
218
- expect( visitor ).to receive(:done).once.ordered
219
- end
220
- end
221
- end
222
-
223
- def compile(gherkin_documents, event_bus = nil)
224
- visitor = double
225
- allow( visitor ).to receive(:test_suite).and_yield(visitor)
226
- allow( visitor ).to receive(:test_case).and_yield(visitor)
227
-
228
- if event_bus.nil?
229
- event_bus = double
230
- allow( event_bus ).to receive(:envelope).and_return(nil)
231
- allow( event_bus ).to receive(:gherkin_source_parsed).and_return(nil)
232
- allow( event_bus ).to receive(:test_case_created).and_return(nil)
233
- allow( event_bus ).to receive(:test_step_created).and_return(nil)
234
- allow( event_bus ).to receive(:envelope).and_return(nil)
235
- end
236
-
237
- yield visitor
238
- super(gherkin_documents, visitor, [], event_bus)
239
- end
240
- end
241
- end