cucumber 11.1.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 (58) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/cucumber/cli/configuration.rb +0 -6
  4. data/lib/cucumber/cli/options.rb +0 -16
  5. data/lib/cucumber/configuration.rb +5 -5
  6. data/lib/cucumber/errors.rb +43 -23
  7. data/lib/cucumber/events/attach_called.rb +28 -0
  8. data/lib/cucumber/events/envelope.rb +2 -2
  9. data/lib/cucumber/events/gherkin_source_parsed.rb +1 -3
  10. data/lib/cucumber/events/gherkin_source_read.rb +1 -1
  11. data/lib/cucumber/events/hook_test_step_created.rb +1 -3
  12. data/lib/cucumber/events/step_activated.rb +1 -1
  13. data/lib/cucumber/events/step_definition_registered.rb +1 -3
  14. data/lib/cucumber/events/test_case_created.rb +1 -1
  15. data/lib/cucumber/events/test_case_finished.rb +1 -1
  16. data/lib/cucumber/events/test_case_ready.rb +1 -1
  17. data/lib/cucumber/events/test_case_started.rb +1 -3
  18. data/lib/cucumber/events/test_run_finished.rb +1 -1
  19. data/lib/cucumber/events/test_run_hook_finished.rb +1 -1
  20. data/lib/cucumber/events/test_run_hook_started.rb +1 -3
  21. data/lib/cucumber/events/test_run_started.rb +1 -3
  22. data/lib/cucumber/events/test_step_created.rb +1 -3
  23. data/lib/cucumber/events/test_step_finished.rb +1 -3
  24. data/lib/cucumber/events/test_step_started.rb +1 -3
  25. data/lib/cucumber/events/undefined_parameter_type.rb +1 -1
  26. data/lib/cucumber/events.rb +7 -2
  27. data/lib/cucumber/filters/retry.rb +7 -22
  28. data/lib/cucumber/formatter/console.rb +5 -5
  29. data/lib/cucumber/formatter/console_counts.rb +5 -3
  30. data/lib/cucumber/formatter/console_issues.rb +3 -3
  31. data/lib/cucumber/formatter/duration_extractor.rb +0 -2
  32. data/lib/cucumber/formatter/fail_fast.rb +2 -2
  33. data/lib/cucumber/formatter/html.rb +10 -6
  34. data/lib/cucumber/formatter/json.rb +10 -8
  35. data/lib/cucumber/formatter/junit.rb +3 -3
  36. data/lib/cucumber/formatter/message.rb +1 -5
  37. data/lib/cucumber/formatter/message_builder.rb +39 -147
  38. data/lib/cucumber/formatter/message_handlers.rb +13 -0
  39. data/lib/cucumber/formatter/pretty.rb +7 -6
  40. data/lib/cucumber/formatter/progress.rb +1 -0
  41. data/lib/cucumber/formatter/rerun.rb +15 -42
  42. data/lib/cucumber/formatter/summary.rb +15 -1
  43. data/lib/cucumber/glue/hook.rb +0 -1
  44. data/lib/cucumber/glue/multiple_world.rb +26 -0
  45. data/lib/cucumber/glue/nil_world.rb +12 -0
  46. data/lib/cucumber/glue/proto_world.rb +4 -5
  47. data/lib/cucumber/glue/registry_and_more.rb +15 -32
  48. data/lib/cucumber/multiline_argument/data_table.rb +5 -7
  49. data/lib/cucumber/retry_policy.rb +27 -0
  50. data/lib/cucumber/rspec/doubles.rb +1 -7
  51. data/lib/cucumber/runtime/meta_message_builder.rb +1 -1
  52. data/lib/cucumber/runtime/user_interface.rb +18 -3
  53. data/lib/cucumber/runtime.rb +34 -53
  54. metadata +53 -26
  55. data/lib/cucumber/events/base.rb +0 -25
  56. data/lib/cucumber/formatter/fanout.rb +0 -28
  57. data/lib/cucumber/query.rb +0 -273
  58. data/lib/cucumber/repository.rb +0 -136
@@ -6,17 +6,22 @@ require 'cucumber/cucumber_expressions/regular_expression'
6
6
  require 'cucumber/cucumber_expressions/cucumber_expression_generator'
7
7
  require 'cucumber/messages/helpers/time_conversion'
8
8
 
9
- require 'cucumber/glue/dsl'
10
- require 'cucumber/glue/snippet'
11
- require 'cucumber/glue/hook'
12
- require 'cucumber/glue/proto_world'
13
- require 'cucumber/glue/step_definition'
14
- require 'cucumber/glue/world_factory'
15
- require 'cucumber/gherkin/i18n'
9
+ require_relative 'dsl'
10
+ require_relative 'snippet'
11
+ require_relative 'hook'
12
+ require_relative 'proto_world'
13
+ require_relative 'step_definition'
14
+ require_relative 'world_factory'
15
+ require_relative '../step_match'
16
+ require_relative '../gherkin/i18n'
17
+
16
18
  require 'multi_test'
17
- require 'cucumber/step_match'
18
- require 'cucumber/events/base'
19
- require 'cucumber/events/step_definition_registered'
19
+ require 'cucumber/core/event/base'
20
+
21
+ require_relative '../events/step_definition_registered'
22
+
23
+ require_relative 'multiple_world'
24
+ require_relative 'nil_world'
20
25
 
21
26
  module Cucumber
22
27
  module Glue
@@ -25,28 +30,6 @@ module Cucumber
25
30
  "#{location}:in `#{name}'"
26
31
  end
27
32
 
28
- # Raised if a World block returns Nil.
29
- class NilWorld < StandardError
30
- def initialize
31
- super('World procs should never return nil')
32
- end
33
- end
34
-
35
- # Raised if there are 2 or more World blocks.
36
- class MultipleWorld < StandardError
37
- def initialize(first_proc, second_proc)
38
- # TODO: [LH] - Just use a heredoc here to fix this up
39
- message = String.new
40
- message << "You can only pass a proc to #World once, but it's happening\n"
41
- message << "in 2 places:\n\n"
42
- message << Glue.backtrace_line(first_proc, 'World') << "\n"
43
- message << Glue.backtrace_line(second_proc, 'World') << "\n\n"
44
- message << "Use Ruby modules instead to extend your worlds. See the Cucumber::Glue::Dsl#World RDoc\n"
45
- message << "or http://wiki.github.com/cucumber/cucumber/a-whole-new-world.\n\n"
46
- super(message)
47
- end
48
- end
49
-
50
33
  # TODO: This class has too many responsibilities, split off
51
34
  class RegistryAndMore
52
35
  attr_reader :current_world, :step_definitions
@@ -77,7 +77,7 @@ module Cucumber
77
77
 
78
78
  # This is a Hash being initialized with a default value of a Hash
79
79
  # DO NOT REFORMAT TO REMOVE {} - Ruby 3.4+ will interpret these as keywords and cucumber will not work
80
- NULL_CONVERSIONS = Hash.new({ strict: false, proc: ->(cell_value) { cell_value } }).freeze
80
+ NULL_CONVERSIONS = Hash.new({ proc: ->(cell_value) { cell_value } }).freeze
81
81
 
82
82
  # @param data [Core::Test::DataTable] the data for the table
83
83
  # @param conversion_procs [Hash] see map_column
@@ -265,9 +265,7 @@ module Cucumber
265
265
  # Returns a new Table with an additional column mapping.
266
266
  #
267
267
  # Change how #hashes converts column values. The +column_name+ argument identifies the column
268
- # and +conversion_proc+ performs the conversion for each cell in that column. If +strict+ is
269
- # true, an error will be raised if the column named +column_name+ is not found. If +strict+
270
- # is false, no error will be raised. Example:
268
+ # and +conversion_proc+ performs the conversion for each cell in that column.
271
269
  #
272
270
  # Given /^an expense report for (.*) with the following posts:$/ do |table|
273
271
  # posts_table = posts_table.map_column('amount') { |a| a.to_i }
@@ -276,9 +274,9 @@ module Cucumber
276
274
  # end
277
275
  # end
278
276
  #
279
- def map_column(column_name, strict: true, &conversion_proc)
277
+ def map_column(column_name, &conversion_proc)
280
278
  conversion_procs = @conversion_procs.dup
281
- conversion_procs[column_name.to_s] = { strict: strict, proc: conversion_proc }
279
+ conversion_procs[column_name.to_s] = { proc: conversion_proc }
282
280
  self.class.new(Core::Test::DataTable.new(raw), conversion_procs, @header_mappings.dup, @header_conversion_proc)
283
281
  end
284
282
 
@@ -467,7 +465,7 @@ module Cucumber
467
465
 
468
466
  def convert_columns!
469
467
  @conversion_procs.each do |column_name, conversion_proc|
470
- verify_column(column_name) if conversion_proc[:strict]
468
+ verify_column(column_name)
471
469
  end
472
470
 
473
471
  cell_matrix.transpose.each do |col|
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Cucumber
4
+ # Decides whether a failed test case is run again, honouring both the `--retry` and the `--retry-total` options.
5
+ #
6
+ # The retry filter asks it and then records what it did, the test runner asks it when it reports the outcome of a
7
+ # test case. Both have to get the same answer, so #will_be_retried? never changes the state of the policy.
8
+ class RetryPolicy
9
+ def initialize(max_retries, max_permanent_failures)
10
+ @max_retries = max_retries
11
+ @max_permanent_failures = max_permanent_failures
12
+ @retries = Hash.new(0)
13
+ @permanent_failures = 0
14
+ end
15
+
16
+ def will_be_retried?(test_case, result)
17
+ return false unless result.failed?
18
+ return false if @permanent_failures >= @max_permanent_failures
19
+
20
+ @retries[test_case] < @max_retries
21
+ end
22
+
23
+ def record_retry(test_case) = @retries[test_case] += 1
24
+
25
+ def record_permanent_failure = @permanent_failures += 1
26
+ end
27
+ end
@@ -5,15 +5,9 @@ require 'rspec/mocks'
5
5
  World(RSpec::Mocks::ExampleMethods)
6
6
 
7
7
  Before do
8
- if RSpec::Mocks::Version::STRING >= '2.9.9'
9
- RSpec::Mocks.setup
10
- else
11
- RSpec::Mocks.setup(self)
12
- end
8
+ RSpec::Mocks.setup(self)
13
9
  end
14
10
 
15
11
  After do
16
- RSpec::Mocks.verify
17
- ensure
18
12
  RSpec::Mocks.teardown
19
13
  end
@@ -70,7 +70,7 @@ module Cucumber
70
70
  def os
71
71
  Cucumber::Messages::Product.new(
72
72
  name: RbConfig::CONFIG['target_os'],
73
- version: Sys::Uname.uname.version
73
+ version: Sys::Uname.version
74
74
  )
75
75
  end
76
76
 
@@ -1,11 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'timeout'
4
+ require 'cucumber/events/attach_called'
4
5
 
5
6
  module Cucumber
6
7
  class Runtime
7
8
  module UserInterface
8
- attr_writer :visitor
9
+ attr_writer :configuration
9
10
 
10
11
  # Suspends execution and prompts +question+ to the console (STDOUT).
11
12
  # An operator (manual tester) can then enter a line of text and hit
@@ -21,6 +22,7 @@ module Cucumber
21
22
  # that makes a sound before invoking #ask.
22
23
  #
23
24
  def ask(question, timeout_seconds)
25
+ Cucumber.deprecate(ask_deprecation_message, 'Cucumber::Runtime#ask (From UserInterface Module)', 'v12')
24
26
  $stdout.puts(question)
25
27
  $stdout.flush
26
28
  puts(question)
@@ -41,12 +43,25 @@ module Cucumber
41
43
  # be a path to a file, or if it's an image it may also be a Base64 encoded image.
42
44
  # The embedded data may or may not be ignored, depending on what kind of formatter(s) are active.
43
45
  #
44
- def attach(src, media_type, filename, streamed_file)
45
- @visitor.attach(src, media_type, filename, streamed_file)
46
+ def attach(src, media_type, filename)
47
+ @configuration.notify(:attach_called, src, media_type, filename)
48
+ self
46
49
  end
47
50
 
48
51
  private
49
52
 
53
+ def ask_deprecation_message
54
+ <<~MESSAGE
55
+ The `#ask` method has been present in cucumber for a while, but its purpose outside of cucumber is
56
+ questionable. It is being deprecated and will be removed in a future version (Targeting v12).
57
+
58
+ If you are using it in your own code, you should remove the dependency on it and implement your own version
59
+ of it. If you are using it in a step definition, you should consider whether that is really necessary and
60
+ use either a conditional waiter or use a tag so that the scenario doesn't automatically run in a CI
61
+ environment where there is no operator to answer the question.
62
+ MESSAGE
63
+ end
64
+
50
65
  def mri_gets(timeout_seconds)
51
66
  Timeout.timeout(timeout_seconds) do
52
67
  $stdin.gets
@@ -1,52 +1,26 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'fileutils'
4
- require 'cucumber/configuration'
5
- require 'cucumber/load_path'
6
- require 'cucumber/formatter/duration'
7
- require 'cucumber/file_specs'
8
- require 'cucumber/filters'
9
- require 'cucumber/formatter/fanout'
10
- require 'cucumber/gherkin/i18n'
11
- require 'cucumber/glue/registry_wrapper'
12
- require 'cucumber/step_match_search'
13
- require 'cucumber/messages'
14
- require 'cucumber/runtime/meta_message_builder'
15
4
  require 'sys/uname'
16
5
 
17
- module Cucumber
18
- module FixRuby21Bug9285
19
- def message
20
- String(super).gsub('@ rb_sysopen ', '')
21
- end
22
- end
23
-
24
- class FileException < RuntimeError
25
- attr_reader :path
26
-
27
- def initialize(original_exception, path)
28
- @path = path
29
- super(original_exception)
30
- end
31
- end
32
-
33
- class FileNotFoundException < FileException
34
- end
6
+ require 'cucumber/core'
7
+ require 'cucumber/messages'
35
8
 
36
- class FeatureFolderNotFoundException < RuntimeError
37
- def initialize(path)
38
- @path = path
39
- super
40
- end
9
+ require_relative 'configuration'
10
+ require_relative 'errors'
11
+ require_relative 'file_specs'
12
+ require_relative 'filters'
13
+ require_relative 'load_path'
14
+ require_relative 'step_match_search'
41
15
 
42
- def message
43
- "No such file or directory - #{@path}"
44
- end
45
- end
16
+ require_relative 'formatter/duration'
17
+ require_relative 'gherkin/i18n'
18
+ require_relative 'glue/registry_wrapper'
19
+ require_relative 'runtime/meta_message_builder'
20
+ require_relative 'runtime/support_code'
21
+ require_relative 'runtime/user_interface'
46
22
 
47
- require 'cucumber/core'
48
- require 'cucumber/runtime/user_interface'
49
- require 'cucumber/runtime/support_code'
23
+ module Cucumber
50
24
  class Runtime
51
25
  attr_reader :results, :support_code, :configuration
52
26
 
@@ -72,10 +46,14 @@ module Cucumber
72
46
 
73
47
  load_step_definitions
74
48
  fire_install_plugin_hook
75
- # TODO: can we remove this state?
76
- self.visitor = report
77
-
78
- receiver = Test::Runner.new(@configuration.event_bus)
49
+ create_formatters
50
+
51
+ options = {
52
+ id_generator: @configuration.id_generator,
53
+ backtrace_filter: Cucumber::Formatter::BacktraceFilter,
54
+ retry_policy: @configuration.retry_policy
55
+ }
56
+ receiver = Test::Runner.new(@configuration.event_bus, **options)
79
57
  compile features, receiver, filters, @configuration.event_bus
80
58
  fire_after_all_hook unless dry_run?
81
59
  @configuration.notify :test_run_finished, !failure?
@@ -111,7 +89,7 @@ module Cucumber
111
89
  if @configuration.wip?
112
90
  summary_report.test_cases.total_passed.positive?
113
91
  else
114
- !summary_report.ok?(strict: @configuration.strict) || !global_hooks_summary_report.ok?
92
+ !summary_report.ok? || !global_hooks_summary_report.ok?
115
93
  end
116
94
  end
117
95
 
@@ -198,13 +176,16 @@ module Cucumber
198
176
  require 'cucumber/formatter/publish_banner_printer'
199
177
  require 'cucumber/core/report/summary'
200
178
 
201
- def report
202
- return @report if @report
203
-
204
- reports = [message_builder, summary_report, global_hooks_summary_report] + formatters
205
- reports << fail_fast_report if @configuration.fail_fast?
206
- reports << publish_banner_printer unless @configuration.publish_quiet?
207
- @report ||= Formatter::Fanout.new(reports)
179
+ def create_formatters
180
+ # Define the MessageBuilder - Required until all messages are generated at the source
181
+ message_builder
182
+ # `summary_report` and `global_hooks_summary_report` are used to determine the exit code
183
+ summary_report
184
+ global_hooks_summary_report
185
+ # Define all formatters which are specified via cli options
186
+ formatters
187
+ fail_fast_report if @configuration.fail_fast?
188
+ publish_banner_printer unless @configuration.publish_quiet?
208
189
  end
209
190
 
210
191
  def message_builder
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 11.1.0
4
+ version: 12.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '9'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '12'
52
+ version: '14'
53
53
  type: :runtime
54
54
  prerelease: false
55
55
  version_requirements: !ruby/object:Gem::Requirement
@@ -59,27 +59,27 @@ dependencies:
59
59
  version: '9'
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '12'
62
+ version: '14'
63
63
  - !ruby/object:Gem::Dependency
64
64
  name: cucumber-core
65
65
  requirement: !ruby/object:Gem::Requirement
66
66
  requirements:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: 16.2.0
69
+ version: '20'
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '17'
72
+ version: '21'
73
73
  type: :runtime
74
74
  prerelease: false
75
75
  version_requirements: !ruby/object:Gem::Requirement
76
76
  requirements:
77
77
  - - ">="
78
78
  - !ruby/object:Gem::Version
79
- version: 16.2.0
79
+ version: '20'
80
80
  - - "<"
81
81
  - !ruby/object:Gem::Version
82
- version: '17'
82
+ version: '21'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: cucumber-cucumber-expressions
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -89,7 +89,7 @@ dependencies:
89
89
  version: '17'
90
90
  - - "<"
91
91
  - !ruby/object:Gem::Version
92
- version: '20'
92
+ version: '21'
93
93
  type: :runtime
94
94
  prerelease: false
95
95
  version_requirements: !ruby/object:Gem::Requirement
@@ -99,7 +99,7 @@ dependencies:
99
99
  version: '17'
100
100
  - - "<"
101
101
  - !ruby/object:Gem::Version
102
- version: '20'
102
+ version: '21'
103
103
  - !ruby/object:Gem::Dependency
104
104
  name: cucumber-html-formatter
105
105
  requirement: !ruby/object:Gem::Requirement
@@ -109,7 +109,7 @@ dependencies:
109
109
  version: '21'
110
110
  - - "<"
111
111
  - !ruby/object:Gem::Version
112
- version: '24'
112
+ version: '25'
113
113
  type: :runtime
114
114
  prerelease: false
115
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -119,21 +119,41 @@ dependencies:
119
119
  version: '21'
120
120
  - - "<"
121
121
  - !ruby/object:Gem::Version
122
- version: '24'
122
+ version: '25'
123
123
  - !ruby/object:Gem::Dependency
124
- name: diff-lcs
124
+ name: cucumber-query
125
125
  requirement: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: '1.5'
129
+ version: '16.1'
130
130
  type: :runtime
131
131
  prerelease: false
132
132
  version_requirements: !ruby/object:Gem::Requirement
133
133
  requirements:
134
134
  - - "~>"
135
+ - !ruby/object:Gem::Version
136
+ version: '16.1'
137
+ - !ruby/object:Gem::Dependency
138
+ name: diff-lcs
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
135
142
  - !ruby/object:Gem::Version
136
143
  version: '1.5'
144
+ - - "<"
145
+ - !ruby/object:Gem::Version
146
+ version: '3.0'
147
+ type: :runtime
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: '1.5'
154
+ - - "<"
155
+ - !ruby/object:Gem::Version
156
+ version: '3.0'
137
157
  - !ruby/object:Gem::Dependency
138
158
  name: logger
139
159
  requirement: !ruby/object:Gem::Requirement
@@ -166,16 +186,22 @@ dependencies:
166
186
  name: multi_test
167
187
  requirement: !ruby/object:Gem::Requirement
168
188
  requirements:
169
- - - "~>"
189
+ - - ">"
170
190
  - !ruby/object:Gem::Version
171
- version: '1.1'
191
+ version: '1'
192
+ - - "<"
193
+ - !ruby/object:Gem::Version
194
+ version: '4'
172
195
  type: :runtime
173
196
  prerelease: false
174
197
  version_requirements: !ruby/object:Gem::Requirement
175
198
  requirements:
176
- - - "~>"
199
+ - - ">"
177
200
  - !ruby/object:Gem::Version
178
- version: '1.1'
201
+ version: '1'
202
+ - - "<"
203
+ - !ruby/object:Gem::Version
204
+ version: '4'
179
205
  - !ruby/object:Gem::Dependency
180
206
  name: sys-uname
181
207
  requirement: !ruby/object:Gem::Requirement
@@ -196,14 +222,14 @@ dependencies:
196
222
  requirements:
197
223
  - - "~>"
198
224
  - !ruby/object:Gem::Version
199
- version: '24.0'
225
+ version: '26.0'
200
226
  type: :development
201
227
  prerelease: false
202
228
  version_requirements: !ruby/object:Gem::Requirement
203
229
  requirements:
204
230
  - - "~>"
205
231
  - !ruby/object:Gem::Version
206
- version: '24.0'
232
+ version: '26.0'
207
233
  - !ruby/object:Gem::Dependency
208
234
  name: nokogiri
209
235
  requirement: !ruby/object:Gem::Requirement
@@ -353,7 +379,7 @@ files:
353
379
  - lib/cucumber/encoding.rb
354
380
  - lib/cucumber/errors.rb
355
381
  - lib/cucumber/events.rb
356
- - lib/cucumber/events/base.rb
382
+ - lib/cucumber/events/attach_called.rb
357
383
  - lib/cucumber/events/envelope.rb
358
384
  - lib/cucumber/events/gherkin_source_parsed.rb
359
385
  - lib/cucumber/events/gherkin_source_read.rb
@@ -402,7 +428,6 @@ files:
402
428
  - lib/cucumber/formatter/duration.rb
403
429
  - lib/cucumber/formatter/duration_extractor.rb
404
430
  - lib/cucumber/formatter/fail_fast.rb
405
- - lib/cucumber/formatter/fanout.rb
406
431
  - lib/cucumber/formatter/global_hooks_summary.rb
407
432
  - lib/cucumber/formatter/html.rb
408
433
  - lib/cucumber/formatter/http_io.rb
@@ -414,6 +439,7 @@ files:
414
439
  - lib/cucumber/formatter/junit.rb
415
440
  - lib/cucumber/formatter/message.rb
416
441
  - lib/cucumber/formatter/message_builder.rb
442
+ - lib/cucumber/formatter/message_handlers.rb
417
443
  - lib/cucumber/formatter/pretty.rb
418
444
  - lib/cucumber/formatter/progress.rb
419
445
  - lib/cucumber/formatter/publish_banner_printer.rb
@@ -433,6 +459,8 @@ files:
433
459
  - lib/cucumber/glue/dsl.rb
434
460
  - lib/cucumber/glue/hook.rb
435
461
  - lib/cucumber/glue/invoke_in_world.rb
462
+ - lib/cucumber/glue/multiple_world.rb
463
+ - lib/cucumber/glue/nil_world.rb
436
464
  - lib/cucumber/glue/proto_world.rb
437
465
  - lib/cucumber/glue/registry_and_more.rb
438
466
  - lib/cucumber/glue/registry_wrapper.rb
@@ -447,12 +475,11 @@ files:
447
475
  - lib/cucumber/multiline_argument/doc_string.rb
448
476
  - lib/cucumber/platform.rb
449
477
  - lib/cucumber/project_initializer.rb
450
- - lib/cucumber/query.rb
451
478
  - lib/cucumber/rake.rb
452
479
  - lib/cucumber/rake/forked_cucumber_runner.rb
453
480
  - lib/cucumber/rake/in_process_cucumber_runner.rb
454
481
  - lib/cucumber/rake/task.rb
455
- - lib/cucumber/repository.rb
482
+ - lib/cucumber/retry_policy.rb
456
483
  - lib/cucumber/rspec/disable_option_parser.rb
457
484
  - lib/cucumber/rspec/doubles.rb
458
485
  - lib/cucumber/running_test_case.rb
@@ -489,14 +516,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
489
516
  requirements:
490
517
  - - ">="
491
518
  - !ruby/object:Gem::Version
492
- version: '3.2'
519
+ version: '3.3'
493
520
  required_rubygems_version: !ruby/object:Gem::Requirement
494
521
  requirements:
495
522
  - - ">="
496
523
  - !ruby/object:Gem::Version
497
524
  version: 3.2.8
498
525
  requirements: []
499
- rubygems_version: 4.0.10
526
+ rubygems_version: 4.0.16
500
527
  specification_version: 4
501
- summary: cucumber-11.1.0
528
+ summary: cucumber-12.0.0
502
529
  test_files: []
@@ -1,25 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # TODO: Remove this class and use Cucumber::Core::Event::Base once v17 of core is minimum
4
- module Cucumber
5
- module Events
6
- # An archetype of what each Cucumber Event defined in cucumber-ruby must adhere to
7
- class Base
8
- # The "key" name of the class to be used as the key in the event registry (Underscored name symbolized)
9
- # @return [Symbol]
10
- def self.event_id
11
- raise 'Must be implemented in subclass'
12
- end
13
-
14
- # The properties of each event. Stored in iVar named format - where the key is the name of the iVar
15
- # @return [Hash<Symbol>]
16
- def to_h
17
- instance_variables.to_h { |variable_name| [variable_name[1..].to_sym, instance_variable_get(variable_name)] }
18
- end
19
-
20
- def event_id
21
- self.class.event_id
22
- end
23
- end
24
- end
25
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cucumber
4
- module Formatter
5
- # Forwards any messages sent to this object to all recipients
6
- # that respond to that message.
7
- class Fanout < BasicObject
8
- attr_reader :recipients
9
- private :recipients
10
-
11
- def initialize(recipients)
12
- @recipients = recipients
13
- end
14
-
15
- def method_missing(message, *args)
16
- super unless recipients
17
-
18
- recipients.each do |recipient|
19
- recipient.send(message, *args) if recipient.respond_to?(message)
20
- end
21
- end
22
-
23
- def respond_to_missing?(name, include_private = false)
24
- recipients.any? { |recipient| recipient.respond_to?(name, include_private) } || super(name, include_private)
25
- end
26
- end
27
- end
28
- end