cucumber-core 12.0.0 → 13.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +31 -263
- data/lib/cucumber/core/compiler.rb +41 -20
- data/lib/cucumber/core/event.rb +26 -27
- data/lib/cucumber/core/event_bus.rb +16 -19
- data/lib/cucumber/core/events.rb +3 -11
- data/lib/cucumber/core/filter.rb +1 -3
- data/lib/cucumber/core/gherkin/parser.rb +41 -13
- data/lib/cucumber/core/gherkin/writer/helpers.rb +6 -4
- data/lib/cucumber/core/gherkin/writer.rb +11 -2
- data/lib/cucumber/core/platform.rb +2 -1
- data/lib/cucumber/core/report/summary.rb +14 -5
- data/lib/cucumber/core/test/action.rb +3 -3
- data/lib/cucumber/core/test/around_hook.rb +3 -1
- data/lib/cucumber/core/test/case.rb +6 -4
- data/lib/cucumber/core/test/data_table.rb +4 -7
- data/lib/cucumber/core/test/doc_string.rb +6 -5
- data/lib/cucumber/core/test/empty_multiline_argument.rb +2 -1
- data/lib/cucumber/core/test/filters/activate_steps_for_self_test.rb +3 -3
- data/lib/cucumber/core/test/filters/locations_filter.rb +1 -2
- data/lib/cucumber/core/test/filters/name_filter.rb +1 -1
- data/lib/cucumber/core/test/filters/tag_filter.rb +1 -1
- data/lib/cucumber/core/test/filters.rb +1 -0
- data/lib/cucumber/core/test/location.rb +6 -7
- data/lib/cucumber/core/test/result.rb +41 -37
- data/lib/cucumber/core/test/runner.rb +7 -7
- data/lib/cucumber/core/test/tag.rb +1 -0
- data/lib/cucumber/core/test/timer.rb +1 -0
- data/lib/cucumber/core.rb +1 -1
- metadata +24 -50
@@ -1,7 +1,8 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require
|
3
|
+
|
4
|
+
require 'cucumber/messages'
|
5
|
+
require 'cucumber/messages/time_conversion'
|
5
6
|
|
6
7
|
module Cucumber
|
7
8
|
module Core
|
@@ -10,9 +11,9 @@ module Cucumber
|
|
10
11
|
TYPES = [:failed, :flaky, :skipped, :undefined, :pending, :passed, :unknown].freeze
|
11
12
|
STRICT_AFFECTED_TYPES = [:flaky, :undefined, :pending].freeze
|
12
13
|
|
13
|
-
def self.ok?(type,
|
14
|
+
def self.ok?(type, strict: StrictConfiguration.new)
|
14
15
|
class_name = type.to_s.slice(0, 1).capitalize + type.to_s.slice(1..-1)
|
15
|
-
const_get(class_name).ok?(
|
16
|
+
const_get(class_name).ok?(strict: strict.strict?(type))
|
16
17
|
end
|
17
18
|
|
18
19
|
# Defines to_sym on a result class for the given result type
|
@@ -37,11 +38,11 @@ module Cucumber
|
|
37
38
|
class Unknown
|
38
39
|
include Result.query_methods :unknown
|
39
40
|
|
40
|
-
def describe_to(
|
41
|
+
def describe_to(_visitor, *_args)
|
41
42
|
self
|
42
43
|
end
|
43
44
|
|
44
|
-
def with_filtered_backtrace(
|
45
|
+
def with_filtered_backtrace(_filter)
|
45
46
|
self
|
46
47
|
end
|
47
48
|
|
@@ -57,7 +58,7 @@ module Cucumber
|
|
57
58
|
include Result.query_methods :passed
|
58
59
|
attr_accessor :duration
|
59
60
|
|
60
|
-
def self.ok?(
|
61
|
+
def self.ok?(*)
|
61
62
|
true
|
62
63
|
end
|
63
64
|
|
@@ -73,7 +74,7 @@ module Cucumber
|
|
73
74
|
end
|
74
75
|
|
75
76
|
def to_s
|
76
|
-
|
77
|
+
'✓'
|
77
78
|
end
|
78
79
|
|
79
80
|
def to_message
|
@@ -83,15 +84,15 @@ module Cucumber
|
|
83
84
|
)
|
84
85
|
end
|
85
86
|
|
86
|
-
def ok?
|
87
|
+
def ok?
|
87
88
|
self.class.ok?
|
88
89
|
end
|
89
90
|
|
90
|
-
def with_appended_backtrace(
|
91
|
+
def with_appended_backtrace(_step)
|
91
92
|
self
|
92
93
|
end
|
93
94
|
|
94
|
-
def with_filtered_backtrace(
|
95
|
+
def with_filtered_backtrace(_filter)
|
95
96
|
self
|
96
97
|
end
|
97
98
|
end
|
@@ -101,7 +102,7 @@ module Cucumber
|
|
101
102
|
|
102
103
|
attr_reader :duration, :exception
|
103
104
|
|
104
|
-
def self.ok?(
|
105
|
+
def self.ok?(*)
|
105
106
|
false
|
106
107
|
end
|
107
108
|
|
@@ -120,14 +121,14 @@ module Cucumber
|
|
120
121
|
end
|
121
122
|
|
122
123
|
def to_s
|
123
|
-
|
124
|
+
'✗'
|
124
125
|
end
|
125
126
|
|
126
127
|
def to_message
|
127
128
|
begin
|
128
129
|
message = exception.backtrace.join("\n")
|
129
130
|
rescue NoMethodError
|
130
|
-
message =
|
131
|
+
message = ''
|
131
132
|
end
|
132
133
|
|
133
134
|
Cucumber::Messages::TestStepResult.new(
|
@@ -137,7 +138,7 @@ module Cucumber
|
|
137
138
|
)
|
138
139
|
end
|
139
140
|
|
140
|
-
def ok?(
|
141
|
+
def ok?(*)
|
141
142
|
self.class.ok?
|
142
143
|
end
|
143
144
|
|
@@ -159,8 +160,8 @@ module Cucumber
|
|
159
160
|
# reporting result type for test cases that fails and the passes on
|
160
161
|
# retry, therefore only the class method self.ok? is needed.
|
161
162
|
class Flaky
|
162
|
-
def self.ok?(
|
163
|
-
!
|
163
|
+
def self.ok?(strict: false)
|
164
|
+
!strict
|
164
165
|
end
|
165
166
|
end
|
166
167
|
|
@@ -169,7 +170,7 @@ module Cucumber
|
|
169
170
|
class Raisable < StandardError
|
170
171
|
attr_reader :message, :duration
|
171
172
|
|
172
|
-
def initialize(message =
|
173
|
+
def initialize(message = '', duration = UnknownDuration.new, backtrace = nil)
|
173
174
|
@message, @duration = message, duration
|
174
175
|
super(message)
|
175
176
|
set_backtrace(backtrace) if backtrace
|
@@ -195,16 +196,16 @@ module Cucumber
|
|
195
196
|
filter.new(dup).exception
|
196
197
|
end
|
197
198
|
|
198
|
-
def ok?(
|
199
|
-
self.class.ok?(
|
199
|
+
def ok?(strict: StrictConfiguration.new)
|
200
|
+
self.class.ok?(strict: strict.strict?(to_sym))
|
200
201
|
end
|
201
202
|
end
|
202
203
|
|
203
204
|
class Undefined < Raisable
|
204
205
|
include Result.query_methods :undefined
|
205
206
|
|
206
|
-
def self.ok?(
|
207
|
-
!
|
207
|
+
def self.ok?(strict: false)
|
208
|
+
!strict
|
208
209
|
end
|
209
210
|
|
210
211
|
def describe_to(visitor, *args)
|
@@ -214,7 +215,7 @@ module Cucumber
|
|
214
215
|
end
|
215
216
|
|
216
217
|
def to_s
|
217
|
-
|
218
|
+
'?'
|
218
219
|
end
|
219
220
|
|
220
221
|
def to_message
|
@@ -228,7 +229,7 @@ module Cucumber
|
|
228
229
|
class Skipped < Raisable
|
229
230
|
include Result.query_methods :skipped
|
230
231
|
|
231
|
-
def self.ok?(
|
232
|
+
def self.ok?(*)
|
232
233
|
true
|
233
234
|
end
|
234
235
|
|
@@ -239,7 +240,7 @@ module Cucumber
|
|
239
240
|
end
|
240
241
|
|
241
242
|
def to_s
|
242
|
-
|
243
|
+
'-'
|
243
244
|
end
|
244
245
|
|
245
246
|
def to_message
|
@@ -253,8 +254,8 @@ module Cucumber
|
|
253
254
|
class Pending < Raisable
|
254
255
|
include Result.query_methods :pending
|
255
256
|
|
256
|
-
def self.ok?(
|
257
|
-
!
|
257
|
+
def self.ok?(strict: false)
|
258
|
+
!strict
|
258
259
|
end
|
259
260
|
|
260
261
|
def describe_to(visitor, *args)
|
@@ -264,7 +265,7 @@ module Cucumber
|
|
264
265
|
end
|
265
266
|
|
266
267
|
def to_s
|
267
|
-
|
268
|
+
'P'
|
268
269
|
end
|
269
270
|
|
270
271
|
def to_message
|
@@ -324,8 +325,7 @@ module Cucumber
|
|
324
325
|
end
|
325
326
|
|
326
327
|
#
|
327
|
-
#
|
328
|
-
# and collects summary information.
|
328
|
+
# An object that responds to the description protocol from the results and collects summary information.
|
329
329
|
#
|
330
330
|
# e.g.
|
331
331
|
# summary = Result::Summary.new
|
@@ -342,7 +342,7 @@ module Cucumber
|
|
342
342
|
@durations = []
|
343
343
|
end
|
344
344
|
|
345
|
-
def method_missing(name, *
|
345
|
+
def method_missing(name, *_args)
|
346
346
|
if name =~ /^total_/
|
347
347
|
get_total(name)
|
348
348
|
else
|
@@ -350,10 +350,14 @@ module Cucumber
|
|
350
350
|
end
|
351
351
|
end
|
352
352
|
|
353
|
-
def
|
353
|
+
def respond_to_missing?(*)
|
354
|
+
true
|
355
|
+
end
|
356
|
+
|
357
|
+
def ok?(strict: StrictConfiguration.new)
|
354
358
|
TYPES.each do |type|
|
355
359
|
if get_total(type) > 0
|
356
|
-
return false unless Result.ok?(type,
|
360
|
+
return false unless Result.ok?(type, strict: strict)
|
357
361
|
end
|
358
362
|
end
|
359
363
|
true
|
@@ -373,7 +377,7 @@ module Cucumber
|
|
373
377
|
if for_status
|
374
378
|
@totals.fetch(for_status, 0)
|
375
379
|
else
|
376
|
-
@totals.reduce(0) { |total,
|
380
|
+
@totals.values.reduce(0) { |total,count| total + count }
|
377
381
|
end
|
378
382
|
end
|
379
383
|
|
@@ -385,7 +389,7 @@ module Cucumber
|
|
385
389
|
|
386
390
|
def get_total(method_name)
|
387
391
|
status = method_name.to_s.gsub('total_', '').to_sym
|
388
|
-
|
392
|
+
@totals.fetch(status, 0)
|
389
393
|
end
|
390
394
|
|
391
395
|
def increment_total(status)
|
@@ -418,12 +422,12 @@ module Cucumber
|
|
418
422
|
class UnknownDuration
|
419
423
|
include Cucumber::Messages::TimeConversion
|
420
424
|
|
421
|
-
def tap
|
425
|
+
def tap
|
422
426
|
self
|
423
427
|
end
|
424
428
|
|
425
429
|
def nanoseconds
|
426
|
-
raise
|
430
|
+
raise '#nanoseconds only allowed to be used in #tap block'
|
427
431
|
end
|
428
432
|
|
429
433
|
def to_message_duration
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/test/timer'
|
3
4
|
|
4
5
|
module Cucumber
|
@@ -67,7 +68,7 @@ module Cucumber
|
|
67
68
|
self
|
68
69
|
end
|
69
70
|
|
70
|
-
def pending(
|
71
|
+
def pending(_message, step_result)
|
71
72
|
@status = Status::Pending.new(step_result)
|
72
73
|
self
|
73
74
|
end
|
@@ -82,11 +83,11 @@ module Cucumber
|
|
82
83
|
self
|
83
84
|
end
|
84
85
|
|
85
|
-
def exception(
|
86
|
+
def exception(_step_exception, _step_result)
|
86
87
|
self
|
87
88
|
end
|
88
89
|
|
89
|
-
def duration(
|
90
|
+
def duration(_step_duration, _step_result)
|
90
91
|
self
|
91
92
|
end
|
92
93
|
|
@@ -110,12 +111,12 @@ module Cucumber
|
|
110
111
|
end
|
111
112
|
|
112
113
|
def result
|
113
|
-
raise NoMethodError,
|
114
|
+
raise NoMethodError, 'Override me'
|
114
115
|
end
|
115
116
|
end
|
116
117
|
|
117
118
|
class Unknown < Base
|
118
|
-
def result(
|
119
|
+
def result(_duration)
|
119
120
|
Result::Unknown.new
|
120
121
|
end
|
121
122
|
end
|
@@ -127,7 +128,7 @@ module Cucumber
|
|
127
128
|
end
|
128
129
|
|
129
130
|
class Failing < Base
|
130
|
-
def execute(test_step, monitor
|
131
|
+
def execute(test_step, monitor)
|
131
132
|
result = test_step.skip(monitor.result)
|
132
133
|
if result.undefined?
|
133
134
|
result = result.with_message(%(Undefined step: "#{test_step.text}"))
|
@@ -150,7 +151,6 @@ module Cucumber
|
|
150
151
|
end
|
151
152
|
end
|
152
153
|
end
|
153
|
-
|
154
154
|
end
|
155
155
|
end
|
156
156
|
end
|
data/lib/cucumber/core.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
require 'cucumber/core/event_bus'
|
3
4
|
require 'cucumber/core/gherkin/parser'
|
4
5
|
require 'cucumber/core/gherkin/document'
|
@@ -9,7 +10,6 @@ require 'gherkin/query'
|
|
9
10
|
|
10
11
|
module Cucumber
|
11
12
|
module Core
|
12
|
-
|
13
13
|
def execute(gherkin_documents, filters = [], event_bus = EventBus.new)
|
14
14
|
yield event_bus if block_given?
|
15
15
|
receiver = Test::Runner.new(event_bus)
|
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:
|
4
|
+
version: 13.0.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: 2023-
|
15
|
+
date: 2023-12-05 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: cucumber-gherkin
|
@@ -20,20 +20,20 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: '
|
23
|
+
version: '27'
|
24
24
|
- - "<"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '28'
|
27
27
|
type: :runtime
|
28
28
|
prerelease: false
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '27'
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
36
|
+
version: '28'
|
37
37
|
- !ruby/object:Gem::Dependency
|
38
38
|
name: cucumber-messages
|
39
39
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,22 +58,22 @@ dependencies:
|
|
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: '5
|
64
|
-
- - "
|
63
|
+
version: '5'
|
64
|
+
- - "<"
|
65
65
|
- !ruby/object:Gem::Version
|
66
|
-
version:
|
66
|
+
version: '7'
|
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: '5
|
74
|
-
- - "
|
73
|
+
version: '5'
|
74
|
+
- - "<"
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: '7'
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
78
|
name: rake
|
79
79
|
requirement: !ruby/object:Gem::Requirement
|
@@ -118,16 +118,16 @@ dependencies:
|
|
118
118
|
name: rubocop
|
119
119
|
requirement: !ruby/object:Gem::Requirement
|
120
120
|
requirements:
|
121
|
-
- -
|
121
|
+
- - "~>"
|
122
122
|
- !ruby/object:Gem::Version
|
123
|
-
version:
|
123
|
+
version: 1.28.2
|
124
124
|
type: :development
|
125
125
|
prerelease: false
|
126
126
|
version_requirements: !ruby/object:Gem::Requirement
|
127
127
|
requirements:
|
128
|
-
- -
|
128
|
+
- - "~>"
|
129
129
|
- !ruby/object:Gem::Version
|
130
|
-
version:
|
130
|
+
version: 1.28.2
|
131
131
|
- !ruby/object:Gem::Dependency
|
132
132
|
name: rubocop-rake
|
133
133
|
requirement: !ruby/object:Gem::Requirement
|
@@ -146,24 +146,21 @@ dependencies:
|
|
146
146
|
name: rubocop-rspec
|
147
147
|
requirement: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- -
|
149
|
+
- - "~>"
|
150
150
|
- !ruby/object:Gem::Version
|
151
|
-
version:
|
151
|
+
version: 2.10.0
|
152
152
|
type: :development
|
153
153
|
prerelease: false
|
154
154
|
version_requirements: !ruby/object:Gem::Requirement
|
155
155
|
requirements:
|
156
|
-
- -
|
156
|
+
- - "~>"
|
157
157
|
- !ruby/object:Gem::Version
|
158
|
-
version:
|
158
|
+
version: 2.10.0
|
159
159
|
- !ruby/object:Gem::Dependency
|
160
160
|
name: rubocop-packaging
|
161
161
|
requirement: !ruby/object:Gem::Requirement
|
162
162
|
requirements:
|
163
163
|
- - "~>"
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: '0.5'
|
166
|
-
- - ">="
|
167
164
|
- !ruby/object:Gem::Version
|
168
165
|
version: 0.5.1
|
169
166
|
type: :development
|
@@ -171,31 +168,8 @@ dependencies:
|
|
171
168
|
version_requirements: !ruby/object:Gem::Requirement
|
172
169
|
requirements:
|
173
170
|
- - "~>"
|
174
|
-
- !ruby/object:Gem::Version
|
175
|
-
version: '0.5'
|
176
|
-
- - ">="
|
177
171
|
- !ruby/object:Gem::Version
|
178
172
|
version: 0.5.1
|
179
|
-
- !ruby/object:Gem::Dependency
|
180
|
-
name: unindent
|
181
|
-
requirement: !ruby/object:Gem::Requirement
|
182
|
-
requirements:
|
183
|
-
- - "~>"
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
version: '1.0'
|
186
|
-
- - ">="
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
version: '1.0'
|
189
|
-
type: :development
|
190
|
-
prerelease: false
|
191
|
-
version_requirements: !ruby/object:Gem::Requirement
|
192
|
-
requirements:
|
193
|
-
- - "~>"
|
194
|
-
- !ruby/object:Gem::Version
|
195
|
-
version: '1.0'
|
196
|
-
- - ">="
|
197
|
-
- !ruby/object:Gem::Version
|
198
|
-
version: '1.0'
|
199
173
|
description: Core library for the Cucumber BDD app
|
200
174
|
email: cukes@googlegroups.com
|
201
175
|
executables: []
|
@@ -258,10 +232,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
258
232
|
requirements:
|
259
233
|
- - ">="
|
260
234
|
- !ruby/object:Gem::Version
|
261
|
-
version:
|
235
|
+
version: 3.0.1
|
262
236
|
requirements: []
|
263
237
|
rubygems_version: 3.3.5
|
264
238
|
signing_key:
|
265
239
|
specification_version: 4
|
266
|
-
summary: cucumber-core-
|
240
|
+
summary: cucumber-core-13.0.0
|
267
241
|
test_files: []
|