cucumber-core 16.2.0 → 17.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 (52) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +19 -1
  3. data/LICENSE +14 -13
  4. data/lib/cucumber/core/compiler.rb +11 -10
  5. data/lib/cucumber/core/event.rb +12 -10
  6. data/lib/cucumber/core/event_bus.rb +1 -1
  7. data/lib/cucumber/core/events/base.rb +26 -0
  8. data/lib/cucumber/core/events/envelope.rb +13 -2
  9. data/lib/cucumber/core/events/gherkin_source_parsed.rb +12 -3
  10. data/lib/cucumber/core/events/test_case_created.rb +12 -6
  11. data/lib/cucumber/core/events/test_case_finished.rb +11 -1
  12. data/lib/cucumber/core/events/test_case_started.rb +12 -3
  13. data/lib/cucumber/core/events/test_step_created.rb +12 -6
  14. data/lib/cucumber/core/events/test_step_finished.rb +14 -4
  15. data/lib/cucumber/core/events/test_step_started.rb +12 -3
  16. data/lib/cucumber/core/gherkin/document.rb +16 -6
  17. data/lib/cucumber/core/gherkin/parser.rb +5 -9
  18. data/lib/cucumber/core/report/summary.rb +2 -2
  19. data/lib/cucumber/core/test/action/defined.rb +3 -3
  20. data/lib/cucumber/core/test/action.rb +6 -6
  21. data/lib/cucumber/core/test/around_hook.rb +4 -4
  22. data/lib/cucumber/core/test/case.rb +27 -26
  23. data/lib/cucumber/core/test/data_table.rb +37 -39
  24. data/lib/cucumber/core/test/doc_string.rb +23 -23
  25. data/lib/cucumber/core/test/empty_multiline_argument.rb +8 -8
  26. data/lib/cucumber/core/test/filters/locations_filter.rb +1 -1
  27. data/lib/cucumber/core/test/filters/name_filter.rb +1 -1
  28. data/lib/cucumber/core/test/filters/tag_filter.rb +1 -1
  29. data/lib/cucumber/core/test/filters.rb +3 -3
  30. data/lib/cucumber/core/test/hook_step.rb +1 -1
  31. data/lib/cucumber/core/test/location.rb +0 -2
  32. data/lib/cucumber/core/test/result/ambiguous.rb +41 -0
  33. data/lib/cucumber/core/test/result/boolean_methods.rb +28 -0
  34. data/lib/cucumber/core/test/result/duration.rb +33 -0
  35. data/lib/cucumber/core/test/result/failed.rb +72 -0
  36. data/lib/cucumber/core/test/result/flaky.rb +21 -0
  37. data/lib/cucumber/core/test/result/passed.rb +57 -0
  38. data/lib/cucumber/core/test/result/pending.rb +41 -0
  39. data/lib/cucumber/core/test/result/raisable.rb +46 -0
  40. data/lib/cucumber/core/test/result/skipped.rb +41 -0
  41. data/lib/cucumber/core/test/result/summary.rb +89 -0
  42. data/lib/cucumber/core/test/result/undefined.rb +41 -0
  43. data/lib/cucumber/core/test/result/unknown.rb +40 -0
  44. data/lib/cucumber/core/test/result/unknown_duration.rb +26 -0
  45. data/lib/cucumber/core/test/result.rb +15 -458
  46. data/lib/cucumber/core/test/runner.rb +25 -22
  47. data/lib/cucumber/core/test/step.rb +22 -23
  48. data/lib/cucumber/core/test/tag.rb +2 -0
  49. data/lib/cucumber/core/test/timer.rb +1 -1
  50. data/lib/cucumber/core.rb +6 -5
  51. metadata +26 -16
  52. data/lib/cucumber/core/platform.rb +0 -17
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cucumber/core/test/timer'
3
+ require 'cucumber/messages/helpers/test_step_result_comparator'
4
+
5
+ require_relative 'timer'
4
6
 
5
7
  module Cucumber
6
8
  module Core
@@ -45,6 +47,8 @@ module Cucumber
45
47
  end
46
48
 
47
49
  class RunningTestCase
50
+ include Cucumber::Messages::Helpers::TestStepResultComparator
51
+
48
52
  def initialize
49
53
  @timer = Timer.new.start
50
54
  @status = Status::Unknown.new(Result::Unknown.new)
@@ -59,27 +63,27 @@ module Cucumber
59
63
  end
60
64
 
61
65
  def failed(step_result)
62
- @status = Status::Failing.new(step_result)
66
+ not_passing(step_result)
63
67
  self
64
68
  end
65
69
 
66
70
  def ambiguous(step_result)
67
- @status = Status::Ambiguous.new(step_result)
71
+ failed(step_result)
68
72
  self
69
73
  end
70
74
 
71
75
  def passed(step_result)
72
- @status = Status::Passing.new(step_result)
76
+ @status = Status::Passing.new(step_result) if test_step_result_rankings[step_result.to_message.status] > test_step_result_rankings[status.step_result_message.status]
73
77
  self
74
78
  end
75
79
 
76
80
  def pending(_message, step_result)
77
- @status = Status::Pending.new(step_result)
81
+ failed(step_result)
78
82
  self
79
83
  end
80
84
 
81
85
  def skipped(step_result)
82
- @status = Status::Skipping.new(step_result)
86
+ failed(step_result)
83
87
  self
84
88
  end
85
89
 
@@ -96,6 +100,13 @@ module Cucumber
96
100
  self
97
101
  end
98
102
 
103
+ private
104
+
105
+ def not_passing(step_result)
106
+ @status = Status::NotPassing.new(step_result) if test_step_result_rankings[step_result.to_message.status] > test_step_result_rankings[status.step_result_message.status]
107
+ self
108
+ end
109
+
99
110
  attr_reader :status
100
111
  private :status
101
112
 
@@ -118,6 +129,10 @@ module Cucumber
118
129
  def result
119
130
  raise NoMethodError, 'Override me'
120
131
  end
132
+
133
+ def step_result_message
134
+ step_result.to_message
135
+ end
121
136
  end
122
137
 
123
138
  class Unknown < Base
@@ -132,26 +147,14 @@ module Cucumber
132
147
  end
133
148
  end
134
149
 
135
- class Failing < Base
150
+ class NotPassing < Base
136
151
  def execute(test_step, monitor)
137
152
  result = test_step.skip(monitor.result)
138
- if result.undefined?
139
- result = result.with_message(%(Undefined step: "#{test_step.text}"))
140
- result = result.with_appended_backtrace(test_step)
141
- end
142
- result
143
- end
144
-
145
- def result(duration)
146
- step_result.with_duration(duration)
153
+ result = result.with_message(%(Undefined step: "#{test_step.text}")) if result.undefined?
154
+ result = result.with_appended_backtrace(test_step) unless test_step.hook?
155
+ result.describe_to(monitor, result)
147
156
  end
148
- end
149
-
150
- Pending = Class.new(Failing)
151
-
152
- Ambiguous = Class.new(Failing)
153
157
 
154
- class Skipping < Failing
155
158
  def result(duration)
156
159
  step_result.with_duration(duration)
157
160
  end
@@ -1,8 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cucumber/core/test/result'
4
- require 'cucumber/core/test/action'
5
- require 'cucumber/core/test/empty_multiline_argument'
3
+ require_relative 'action'
4
+ require_relative 'empty_multiline_argument'
6
5
 
7
6
  module Cucumber
8
7
  module Core
@@ -20,48 +19,48 @@ module Cucumber
20
19
  @action = action
21
20
  end
22
21
 
23
- def describe_to(visitor, *)
24
- visitor.test_step(self, *)
22
+ def action_location
23
+ @action.location
25
24
  end
26
25
 
27
- def hook?
28
- false
26
+ def backtrace_line
27
+ "#{location}:in `#{text}'"
29
28
  end
30
29
 
31
- def skip(*)
32
- @action.skip(*)
30
+ def describe_to(visitor, *)
31
+ visitor.test_step(self, *)
33
32
  end
34
33
 
35
34
  def execute(*)
36
35
  @action.execute(*)
37
36
  end
38
37
 
39
- def with_action(action_location = nil, &)
40
- self.class.new(id, text, location, multiline_arg, Test::Action::Defined.new(action_location, &))
38
+ def hook?
39
+ false
41
40
  end
42
41
 
43
- def with_unskippable_action(action_location = nil, &)
44
- self.class.new(id, text, location, multiline_arg, Test::Action::Unskippable.new(action_location, &))
42
+ def inspect
43
+ "#<#{self.class}: #{location}>"
45
44
  end
46
45
 
47
- def backtrace_line
48
- "#{location}:in `#{text}'"
46
+ def matching_locations
47
+ [location.merge(multiline_arg)]
49
48
  end
50
49
 
51
- def to_s
52
- text
50
+ def skip(*)
51
+ @action.skip(*)
53
52
  end
54
53
 
55
- def action_location
56
- @action.location
54
+ def to_s
55
+ text
57
56
  end
58
57
 
59
- def matching_locations
60
- [location.merge(multiline_arg)]
58
+ def with_action(action_location = nil, &)
59
+ self.class.new(id, text, location, multiline_arg, Test::Action::Defined.new(action_location, &))
61
60
  end
62
61
 
63
- def inspect
64
- "#<#{self.class}: #{location}>"
62
+ def with_unskippable_action(action_location = nil, &)
63
+ self.class.new(id, text, location, multiline_arg, Test::Action::Unskippable.new(action_location, &))
65
64
  end
66
65
  end
67
66
  end
@@ -1,5 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative 'location'
4
+
3
5
  module Cucumber
4
6
  module Core
5
7
  module Test
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cucumber/core/test/result'
3
+ require_relative 'result'
4
4
 
5
5
  module Cucumber
6
6
  module Core
data/lib/cucumber/core.rb CHANGED
@@ -1,10 +1,11 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'cucumber/core/event_bus'
4
- require 'cucumber/core/gherkin/parser'
5
- require 'cucumber/core/gherkin/document'
6
- require 'cucumber/core/compiler'
7
- require 'cucumber/core/test/runner'
3
+ require_relative 'core/gherkin/parser'
4
+ require_relative 'core/gherkin/document'
5
+ require_relative 'core/test/runner'
6
+ require_relative 'core/compiler'
7
+ require_relative 'core/event_bus'
8
+
8
9
  require 'cucumber/messages'
9
10
  require 'gherkin/query'
10
11
 
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: 16.2.0
4
+ version: 17.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -9,10 +9,9 @@ authors:
9
9
  - Steve Tooke
10
10
  - Oleg Sukhodolsky
11
11
  - Tom Brand
12
- autorequire:
13
12
  bindir: bin
14
13
  cert_chain: []
15
- date: 2026-02-06 00:00:00.000000000 Z
14
+ date: 1980-01-02 00:00:00.000000000 Z
16
15
  dependencies:
17
16
  - !ruby/object:Gem::Dependency
18
17
  name: cucumber-gherkin
@@ -63,7 +62,7 @@ dependencies:
63
62
  version: '6'
64
63
  - - "<"
65
64
  - !ruby/object:Gem::Version
66
- version: '9'
65
+ version: '10'
67
66
  type: :runtime
68
67
  prerelease: false
69
68
  version_requirements: !ruby/object:Gem::Requirement
@@ -73,7 +72,7 @@ dependencies:
73
72
  version: '6'
74
73
  - - "<"
75
74
  - !ruby/object:Gem::Version
76
- version: '9'
75
+ version: '10'
77
76
  - !ruby/object:Gem::Dependency
78
77
  name: rake
79
78
  requirement: !ruby/object:Gem::Requirement
@@ -108,14 +107,14 @@ dependencies:
108
107
  requirements:
109
108
  - - "~>"
110
109
  - !ruby/object:Gem::Version
111
- version: 1.81.0
110
+ version: 1.87.0
112
111
  type: :development
113
112
  prerelease: false
114
113
  version_requirements: !ruby/object:Gem::Requirement
115
114
  requirements:
116
115
  - - "~>"
117
116
  - !ruby/object:Gem::Version
118
- version: 1.81.0
117
+ version: 1.87.0
119
118
  - !ruby/object:Gem::Dependency
120
119
  name: rubocop-packaging
121
120
  requirement: !ruby/object:Gem::Requirement
@@ -136,28 +135,28 @@ dependencies:
136
135
  requirements:
137
136
  - - "~>"
138
137
  - !ruby/object:Gem::Version
139
- version: 0.7.0
138
+ version: 0.7.1
140
139
  type: :development
141
140
  prerelease: false
142
141
  version_requirements: !ruby/object:Gem::Requirement
143
142
  requirements:
144
143
  - - "~>"
145
144
  - !ruby/object:Gem::Version
146
- version: 0.7.0
145
+ version: 0.7.1
147
146
  - !ruby/object:Gem::Dependency
148
147
  name: rubocop-rspec
149
148
  requirement: !ruby/object:Gem::Requirement
150
149
  requirements:
151
150
  - - "~>"
152
151
  - !ruby/object:Gem::Version
153
- version: 3.8.0
152
+ version: 3.9.0
154
153
  type: :development
155
154
  prerelease: false
156
155
  version_requirements: !ruby/object:Gem::Requirement
157
156
  requirements:
158
157
  - - "~>"
159
158
  - !ruby/object:Gem::Version
160
- version: 3.8.0
159
+ version: 3.9.0
161
160
  description: Core library for the Cucumber BDD app
162
161
  email: cukes@googlegroups.com
163
162
  executables: []
@@ -172,6 +171,7 @@ files:
172
171
  - lib/cucumber/core/event.rb
173
172
  - lib/cucumber/core/event_bus.rb
174
173
  - lib/cucumber/core/events.rb
174
+ - lib/cucumber/core/events/base.rb
175
175
  - lib/cucumber/core/events/envelope.rb
176
176
  - lib/cucumber/core/events/gherkin_source_parsed.rb
177
177
  - lib/cucumber/core/events/test_case_created.rb
@@ -196,7 +196,6 @@ files:
196
196
  - lib/cucumber/core/gherkin/writer/scenario_outline.rb
197
197
  - lib/cucumber/core/gherkin/writer/step.rb
198
198
  - lib/cucumber/core/gherkin/writer/table.rb
199
- - lib/cucumber/core/platform.rb
200
199
  - lib/cucumber/core/report/summary.rb
201
200
  - lib/cucumber/core/test/action.rb
202
201
  - lib/cucumber/core/test/action/defined.rb
@@ -214,6 +213,19 @@ files:
214
213
  - lib/cucumber/core/test/hook_step.rb
215
214
  - lib/cucumber/core/test/location.rb
216
215
  - lib/cucumber/core/test/result.rb
216
+ - lib/cucumber/core/test/result/ambiguous.rb
217
+ - lib/cucumber/core/test/result/boolean_methods.rb
218
+ - lib/cucumber/core/test/result/duration.rb
219
+ - lib/cucumber/core/test/result/failed.rb
220
+ - lib/cucumber/core/test/result/flaky.rb
221
+ - lib/cucumber/core/test/result/passed.rb
222
+ - lib/cucumber/core/test/result/pending.rb
223
+ - lib/cucumber/core/test/result/raisable.rb
224
+ - lib/cucumber/core/test/result/skipped.rb
225
+ - lib/cucumber/core/test/result/summary.rb
226
+ - lib/cucumber/core/test/result/undefined.rb
227
+ - lib/cucumber/core/test/result/unknown.rb
228
+ - lib/cucumber/core/test/result/unknown_duration.rb
217
229
  - lib/cucumber/core/test/runner.rb
218
230
  - lib/cucumber/core/test/step.rb
219
231
  - lib/cucumber/core/test/tag.rb
@@ -228,7 +240,6 @@ metadata:
228
240
  mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
229
241
  source_code_uri: https://github.com/cucumber/cucumber-ruby-core
230
242
  funding_uri: https://opencollective.com/cucumber
231
- post_install_message:
232
243
  rdoc_options:
233
244
  - "--charset=UTF-8"
234
245
  require_paths:
@@ -244,8 +255,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
244
255
  - !ruby/object:Gem::Version
245
256
  version: 3.2.8
246
257
  requirements: []
247
- rubygems_version: 3.4.20
248
- signing_key:
258
+ rubygems_version: 4.0.10
249
259
  specification_version: 4
250
- summary: cucumber-core-16.2.0
260
+ summary: cucumber-core-17.0.0
251
261
  test_files: []
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Detect the platform we're running on so we can tweak behaviour
4
- # in various places.
5
- require 'rbconfig'
6
-
7
- module Cucumber
8
- unless defined?(Cucumber::VERSION)
9
- JRUBY = defined?(JRUBY_VERSION)
10
- IRONRUBY = defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ironruby'
11
- WINDOWS = RbConfig::CONFIG['host_os'] =~ /mswin|mingw/
12
- OS_X = RbConfig::CONFIG['host_os'] =~ /darwin/
13
- WINDOWS_MRI = WINDOWS && !JRUBY && !IRONRUBY
14
- RUBY_2_0 = RUBY_VERSION =~ /^2\.0/
15
- RUBY_1_9 = RUBY_VERSION =~ /^1\.9/
16
- end
17
- end