cucumber 10.2.0 → 11.1.1

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +17 -8
  3. data/VERSION +1 -1
  4. data/lib/cucumber/cli/configuration.rb +1 -1
  5. data/lib/cucumber/cli/main.rb +22 -0
  6. data/lib/cucumber/cli/options.rb +3 -18
  7. data/lib/cucumber/cli/profile_loader.rb +2 -2
  8. data/lib/cucumber/cli/rerun_file.rb +1 -1
  9. data/lib/cucumber/cli.rb +3 -0
  10. data/lib/cucumber/configuration.rb +33 -24
  11. data/lib/cucumber/events/attach_called.rb +19 -0
  12. data/lib/cucumber/events/base.rb +25 -0
  13. data/lib/cucumber/events/envelope.rb +29 -2
  14. data/lib/cucumber/events/gherkin_source_parsed.rb +12 -3
  15. data/lib/cucumber/events/gherkin_source_read.rb +11 -3
  16. data/lib/cucumber/events/hook_test_step_created.rb +12 -2
  17. data/lib/cucumber/events/step_activated.rb +13 -7
  18. data/lib/cucumber/events/step_definition_registered.rb +12 -4
  19. data/lib/cucumber/events/test_case_created.rb +11 -3
  20. data/lib/cucumber/events/test_case_finished.rb +12 -4
  21. data/lib/cucumber/events/test_case_ready.rb +10 -4
  22. data/lib/cucumber/events/test_case_started.rb +11 -2
  23. data/lib/cucumber/events/test_run_finished.rb +10 -3
  24. data/lib/cucumber/events/test_run_hook_finished.rb +19 -0
  25. data/lib/cucumber/events/test_run_hook_started.rb +20 -0
  26. data/lib/cucumber/events/test_run_started.rb +11 -2
  27. data/lib/cucumber/events/test_step_created.rb +12 -2
  28. data/lib/cucumber/events/test_step_finished.rb +12 -2
  29. data/lib/cucumber/events/test_step_started.rb +11 -2
  30. data/lib/cucumber/events/undefined_parameter_type.rb +11 -3
  31. data/lib/cucumber/events.rb +3 -0
  32. data/lib/cucumber/filters/fire_before_all_hooks.rb +36 -0
  33. data/lib/cucumber/filters/randomizer.rb +5 -5
  34. data/lib/cucumber/filters/reverser.rb +41 -0
  35. data/lib/cucumber/filters.rb +1 -12
  36. data/lib/cucumber/formatter/ansicolor.rb +3 -0
  37. data/lib/cucumber/formatter/console.rb +19 -11
  38. data/lib/cucumber/formatter/console_issues.rb +5 -5
  39. data/lib/cucumber/formatter/duration_extractor.rb +2 -2
  40. data/lib/cucumber/formatter/fail_fast.rb +3 -4
  41. data/lib/cucumber/formatter/global_hooks_summary.rb +36 -0
  42. data/lib/cucumber/formatter/html.rb +6 -6
  43. data/lib/cucumber/formatter/json.rb +14 -10
  44. data/lib/cucumber/formatter/junit.rb +5 -34
  45. data/lib/cucumber/formatter/message.rb +5 -5
  46. data/lib/cucumber/formatter/message_builder.rb +255 -143
  47. data/lib/cucumber/formatter/message_handlers.rb +13 -0
  48. data/lib/cucumber/formatter/pretty.rb +7 -9
  49. data/lib/cucumber/formatter/progress.rb +2 -2
  50. data/lib/cucumber/formatter/rerun.rb +82 -31
  51. data/lib/cucumber/formatter/summary.rb +15 -1
  52. data/lib/cucumber/formatter/usage.rb +2 -3
  53. data/lib/cucumber/formatter.rb +3 -0
  54. data/lib/cucumber/glue/proto_world.rb +3 -2
  55. data/lib/cucumber/glue/registry_and_more.rb +122 -20
  56. data/lib/cucumber/glue.rb +3 -0
  57. data/lib/cucumber/multiline_argument/data_table.rb +0 -11
  58. data/lib/cucumber/platform.rb +2 -2
  59. data/lib/cucumber/query.rb +273 -0
  60. data/lib/cucumber/rake/forked_cucumber_runner.rb +57 -0
  61. data/lib/cucumber/rake/in_process_cucumber_runner.rb +27 -0
  62. data/lib/cucumber/rake/task.rb +36 -106
  63. data/lib/cucumber/rake.rb +3 -0
  64. data/lib/cucumber/repository.rb +136 -0
  65. data/lib/cucumber/rspec/disable_option_parser.rb +3 -3
  66. data/lib/cucumber/runtime/user_interface.rb +4 -2
  67. data/lib/cucumber/runtime.rb +39 -17
  68. data/lib/cucumber/step_match.rb +1 -1
  69. data/lib/cucumber.rb +2 -13
  70. metadata +35 -31
  71. data/lib/cucumber/formatter/errors.rb +0 -9
  72. data/lib/cucumber/formatter/fanout.rb +0 -28
  73. data/lib/cucumber/formatter/query/hook_by_test_step.rb +0 -34
  74. data/lib/cucumber/formatter/query/pickle_by_test.rb +0 -28
  75. data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +0 -28
  76. data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +0 -42
  77. data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +0 -44
  78. data/lib/cucumber/formatter/query/test_run_started.rb +0 -17
  79. data/lib/cucumber/step_definition_light.rb +0 -29
@@ -2,12 +2,12 @@
2
2
 
3
3
  require 'optparse'
4
4
 
5
- module Spec # :nodoc:
6
- module Runner # :nodoc:
5
+ module Spec
6
+ module Runner
7
7
  # Neuters RSpec's option parser.
8
8
  # (RSpec's option parser tries to parse ARGV, which
9
9
  # will fail when running cucumber)
10
- class OptionParser < ::OptionParser # :nodoc:
10
+ class OptionParser < ::OptionParser
11
11
  NEUTERED_RSPEC = Object.new
12
12
  def NEUTERED_RSPEC.method_missing(_method, *_args) # rubocop:disable Style/MissingRespondToMissing
13
13
  self || super
@@ -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
@@ -42,7 +43,8 @@ module Cucumber
42
43
  # The embedded data may or may not be ignored, depending on what kind of formatter(s) are active.
43
44
  #
44
45
  def attach(src, media_type, filename)
45
- @visitor.attach(src, media_type, filename)
46
+ @configuration.notify(:attach_called, src, media_type, filename)
47
+ self
46
48
  end
47
49
 
48
50
  private
@@ -6,7 +6,6 @@ require 'cucumber/load_path'
6
6
  require 'cucumber/formatter/duration'
7
7
  require 'cucumber/file_specs'
8
8
  require 'cucumber/filters'
9
- require 'cucumber/formatter/fanout'
10
9
  require 'cucumber/gherkin/i18n'
11
10
  require 'cucumber/glue/registry_wrapper'
12
11
  require 'cucumber/step_match_search'
@@ -72,15 +71,12 @@ module Cucumber
72
71
 
73
72
  load_step_definitions
74
73
  fire_install_plugin_hook
75
- fire_before_all_hook unless dry_run?
76
- # TODO: can we remove this state?
77
- self.visitor = report
74
+ create_formatters
78
75
 
79
76
  receiver = Test::Runner.new(@configuration.event_bus)
80
77
  compile features, receiver, filters, @configuration.event_bus
81
- @configuration.notify :test_run_finished, !failure?
82
-
83
78
  fire_after_all_hook unless dry_run?
79
+ @configuration.notify :test_run_finished, !failure?
84
80
  end
85
81
 
86
82
  def features_paths
@@ -113,7 +109,7 @@ module Cucumber
113
109
  if @configuration.wip?
114
110
  summary_report.test_cases.total_passed.positive?
115
111
  else
116
- !summary_report.ok?(strict: @configuration.strict)
112
+ !summary_report.ok?(strict: @configuration.strict) || !global_hooks_summary_report.ok?
117
113
  end
118
114
  end
119
115
 
@@ -123,10 +119,6 @@ module Cucumber
123
119
  @support_code.fire_hook(:install_plugin, @configuration, registry_wrapper)
124
120
  end
125
121
 
126
- def fire_before_all_hook # :nodoc:
127
- @support_code.fire_hook(:before_all)
128
- end
129
-
130
122
  def fire_after_all_hook # :nodoc:
131
123
  @support_code.fire_hook(:after_all)
132
124
  end
@@ -136,6 +128,22 @@ module Cucumber
136
128
  @features ||= feature_files.map do |path|
137
129
  source = NormalisedEncodingFile.read(path)
138
130
  @configuration.notify :gherkin_source_read, path, source
131
+
132
+ # TODO: When core is v17+ switch the below code out to the following
133
+ # Cucumber::Core::Gherkin::Document.new(path, source).tap do |document|
134
+ # @configuration.notify(:envelope, document.to_envelope)
135
+ # end
136
+ to_envelope =
137
+ Cucumber::Messages::Envelope.new(
138
+ source: Cucumber::Messages::Source.new(
139
+ uri: path,
140
+ data: source,
141
+ media_type: 'text/x.cucumber.gherkin+plain'
142
+ )
143
+ )
144
+
145
+ @configuration.notify(:envelope, to_envelope)
146
+
139
147
  Cucumber::Core::Gherkin::Document.new(path, source)
140
148
  end
141
149
  end
@@ -188,19 +196,31 @@ module Cucumber
188
196
  require 'cucumber/formatter/publish_banner_printer'
189
197
  require 'cucumber/core/report/summary'
190
198
 
191
- def report
192
- return @report if @report
199
+ def create_formatters
200
+ # Define all formatters which are specified via cli options
201
+ formatters
202
+ # Define the MessageBuilder formatter - Required until all messages are generated at the source
203
+ # Skip when a user formatter already inherits from MessageBuilder (e.g. HTML) to avoid sending every event twice.
204
+ message_builder unless formatters.any? { |f| f.is_a?(Formatter::MessageBuilder) }
205
+ # `summary_report` and `global_hooks_summary_report` are used to determine the exit code
206
+ summary_report
207
+ global_hooks_summary_report
208
+ fail_fast_report if @configuration.fail_fast?
209
+ publish_banner_printer unless @configuration.publish_quiet?
210
+ end
193
211
 
194
- reports = [summary_report] + formatters
195
- reports << fail_fast_report if @configuration.fail_fast?
196
- reports << publish_banner_printer unless @configuration.publish_quiet?
197
- @report ||= Formatter::Fanout.new(reports)
212
+ def message_builder
213
+ @message_builder ||= Formatter::MessageBuilder.new(@configuration)
198
214
  end
199
215
 
200
216
  def summary_report
201
217
  @summary_report ||= Core::Report::Summary.new(@configuration.event_bus)
202
218
  end
203
219
 
220
+ def global_hooks_summary_report
221
+ @global_hooks_summary_report ||= Formatter::GlobalHooksSummary.new(@configuration)
222
+ end
223
+
204
224
  def fail_fast_report
205
225
  @fail_fast_report ||= Formatter::FailFast.new(@configuration)
206
226
  end
@@ -244,6 +264,7 @@ module Cucumber
244
264
  filters << Cucumber::Core::Test::NameFilter.new(name_regexps)
245
265
  filters << Cucumber::Core::Test::LocationsFilter.new(filespecs.locations)
246
266
  filters << Filters::Randomizer.new(@configuration.seed) if @configuration.randomize?
267
+ filters << Filters::Reverser.new if @configuration.reverse_order?
247
268
  # TODO: can we just use Glue::RegistryAndMore's step definitions directly?
248
269
  step_match_search = StepMatchSearch.new(@support_code.registry.method(:step_matches), @configuration)
249
270
  filters << Filters::ActivateSteps.new(step_match_search, @configuration)
@@ -255,6 +276,7 @@ module Cucumber
255
276
  filters << Filters::ApplyAfterHooks.new(@support_code)
256
277
  filters << Filters::ApplyAroundHooks.new(@support_code)
257
278
  filters << Filters::BroadcastTestRunStartedEvent.new(@configuration)
279
+ filters << Filters::FireBeforeAllHooks.new(@support_code)
258
280
  filters << Filters::Quit.new
259
281
  end
260
282
 
@@ -148,7 +148,7 @@ module Cucumber
148
148
  end
149
149
 
150
150
  def activate(test_step)
151
- test_step.with_action { raise @error }
151
+ test_step.with_unskippable_action { raise Core::Test::Result::Ambiguous, @error.message }
152
152
  end
153
153
  end
154
154
  end
data/lib/cucumber.rb CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'yaml'
4
4
  require 'cucumber/encoding'
5
5
  require 'cucumber/platform'
6
+ require 'cucumber/formatter'
6
7
  require 'cucumber/runtime'
7
8
  require 'cucumber/cli/main'
8
9
  require 'cucumber/step_definitions'
@@ -11,7 +12,6 @@ require 'cucumber/term/ansicolor'
11
12
  module Cucumber
12
13
  class << self
13
14
  attr_accessor :wants_to_quit
14
- attr_reader :use_legacy_autoloader
15
15
 
16
16
  def deprecate(message, method, remove_after_version)
17
17
  Kernel.warn(
@@ -24,22 +24,11 @@ module Cucumber
24
24
  def logger
25
25
  return @log if @log
26
26
 
27
- @log = Logger.new($stdout)
28
- @log.level = Logger::INFO
29
- @log
27
+ @log = Logger.new($stdout).tap { |log| log.level = Logger::INFO }
30
28
  end
31
29
 
32
30
  def logger=(logger)
33
31
  @log = logger
34
32
  end
35
-
36
- def use_legacy_autoloader=(value)
37
- Cucumber.deprecate(
38
- 'This will be phased out of cucumber and should not be used. It is only there to support legacy systems',
39
- '.use_legacy_autoloader',
40
- '11.0.0'
41
- )
42
- @use_legacy_autoloader = value
43
- end
44
33
  end
45
34
  end
metadata CHANGED
@@ -1,17 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber
3
3
  version: !ruby/object:Gem::Version
4
- version: 10.2.0
4
+ version: 11.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
8
8
  - Matt Wynne
9
9
  - Steve Tooke
10
10
  - Luke Hill
11
- autorequire:
12
11
  bindir: bin
13
12
  cert_chain: []
14
- date: 2025-12-10 00:00:00.000000000 Z
13
+ date: 1980-01-02 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
16
  name: base64
@@ -65,9 +64,9 @@ dependencies:
65
64
  name: cucumber-core
66
65
  requirement: !ruby/object:Gem::Requirement
67
66
  requirements:
68
- - - ">"
67
+ - - ">="
69
68
  - !ruby/object:Gem::Version
70
- version: '15'
69
+ version: 16.2.0
71
70
  - - "<"
72
71
  - !ruby/object:Gem::Version
73
72
  version: '17'
@@ -75,9 +74,9 @@ dependencies:
75
74
  prerelease: false
76
75
  version_requirements: !ruby/object:Gem::Requirement
77
76
  requirements:
78
- - - ">"
77
+ - - ">="
79
78
  - !ruby/object:Gem::Version
80
- version: '15'
79
+ version: 16.2.0
81
80
  - - "<"
82
81
  - !ruby/object:Gem::Version
83
82
  version: '17'
@@ -110,7 +109,7 @@ dependencies:
110
109
  version: '21'
111
110
  - - "<"
112
111
  - !ruby/object:Gem::Version
113
- version: '23'
112
+ version: '24'
114
113
  type: :runtime
115
114
  prerelease: false
116
115
  version_requirements: !ruby/object:Gem::Requirement
@@ -120,7 +119,7 @@ dependencies:
120
119
  version: '21'
121
120
  - - "<"
122
121
  - !ruby/object:Gem::Version
123
- version: '23'
122
+ version: '24'
124
123
  - !ruby/object:Gem::Dependency
125
124
  name: diff-lcs
126
125
  requirement: !ruby/object:Gem::Requirement
@@ -183,28 +182,28 @@ dependencies:
183
182
  requirements:
184
183
  - - "~>"
185
184
  - !ruby/object:Gem::Version
186
- version: '1.3'
185
+ version: '1.5'
187
186
  type: :runtime
188
187
  prerelease: false
189
188
  version_requirements: !ruby/object:Gem::Requirement
190
189
  requirements:
191
190
  - - "~>"
192
191
  - !ruby/object:Gem::Version
193
- version: '1.3'
192
+ version: '1.5'
194
193
  - !ruby/object:Gem::Dependency
195
194
  name: cucumber-compatibility-kit
196
195
  requirement: !ruby/object:Gem::Requirement
197
196
  requirements:
198
197
  - - "~>"
199
198
  - !ruby/object:Gem::Version
200
- version: '20.0'
199
+ version: '24.0'
201
200
  type: :development
202
201
  prerelease: false
203
202
  version_requirements: !ruby/object:Gem::Requirement
204
203
  requirements:
205
204
  - - "~>"
206
205
  - !ruby/object:Gem::Version
207
- version: '20.0'
206
+ version: '24.0'
208
207
  - !ruby/object:Gem::Dependency
209
208
  name: nokogiri
210
209
  requirement: !ruby/object:Gem::Requirement
@@ -253,14 +252,14 @@ dependencies:
253
252
  requirements:
254
253
  - - "~>"
255
254
  - !ruby/object:Gem::Version
256
- version: 1.71.0
255
+ version: 1.85.1
257
256
  type: :development
258
257
  prerelease: false
259
258
  version_requirements: !ruby/object:Gem::Requirement
260
259
  requirements:
261
260
  - - "~>"
262
261
  - !ruby/object:Gem::Version
263
- version: 1.71.0
262
+ version: 1.85.1
264
263
  - !ruby/object:Gem::Dependency
265
264
  name: rubocop-packaging
266
265
  requirement: !ruby/object:Gem::Requirement
@@ -295,14 +294,14 @@ dependencies:
295
294
  requirements:
296
295
  - - "~>"
297
296
  - !ruby/object:Gem::Version
298
- version: 3.4.0
297
+ version: 3.8.0
299
298
  type: :development
300
299
  prerelease: false
301
300
  version_requirements: !ruby/object:Gem::Requirement
302
301
  requirements:
303
302
  - - "~>"
304
303
  - !ruby/object:Gem::Version
305
- version: 3.4.0
304
+ version: 3.8.0
306
305
  - !ruby/object:Gem::Dependency
307
306
  name: simplecov
308
307
  requirement: !ruby/object:Gem::Requirement
@@ -343,6 +342,7 @@ files:
343
342
  - VERSION
344
343
  - bin/cucumber
345
344
  - lib/cucumber.rb
345
+ - lib/cucumber/cli.rb
346
346
  - lib/cucumber/cli/configuration.rb
347
347
  - lib/cucumber/cli/main.rb
348
348
  - lib/cucumber/cli/options.rb
@@ -353,6 +353,8 @@ files:
353
353
  - lib/cucumber/encoding.rb
354
354
  - lib/cucumber/errors.rb
355
355
  - lib/cucumber/events.rb
356
+ - lib/cucumber/events/attach_called.rb
357
+ - lib/cucumber/events/base.rb
356
358
  - lib/cucumber/events/envelope.rb
357
359
  - lib/cucumber/events/gherkin_source_parsed.rb
358
360
  - lib/cucumber/events/gherkin_source_read.rb
@@ -364,6 +366,8 @@ files:
364
366
  - lib/cucumber/events/test_case_ready.rb
365
367
  - lib/cucumber/events/test_case_started.rb
366
368
  - lib/cucumber/events/test_run_finished.rb
369
+ - lib/cucumber/events/test_run_hook_finished.rb
370
+ - lib/cucumber/events/test_run_hook_started.rb
367
371
  - lib/cucumber/events/test_run_started.rb
368
372
  - lib/cucumber/events/test_step_created.rb
369
373
  - lib/cucumber/events/test_step_finished.rb
@@ -378,14 +382,17 @@ files:
378
382
  - lib/cucumber/filters/apply_before_hooks.rb
379
383
  - lib/cucumber/filters/broadcast_test_case_ready_event.rb
380
384
  - lib/cucumber/filters/broadcast_test_run_started_event.rb
385
+ - lib/cucumber/filters/fire_before_all_hooks.rb
381
386
  - lib/cucumber/filters/gated_receiver.rb
382
387
  - lib/cucumber/filters/prepare_world.rb
383
388
  - lib/cucumber/filters/quit.rb
384
389
  - lib/cucumber/filters/randomizer.rb
385
390
  - lib/cucumber/filters/retry.rb
391
+ - lib/cucumber/filters/reverser.rb
386
392
  - lib/cucumber/filters/tag_limits.rb
387
393
  - lib/cucumber/filters/tag_limits/test_case_index.rb
388
394
  - lib/cucumber/filters/tag_limits/verifier.rb
395
+ - lib/cucumber/formatter.rb
389
396
  - lib/cucumber/formatter/ansicolor.rb
390
397
  - lib/cucumber/formatter/ast_lookup.rb
391
398
  - lib/cucumber/formatter/backtrace_filter.rb
@@ -395,9 +402,8 @@ files:
395
402
  - lib/cucumber/formatter/curl_option_parser.rb
396
403
  - lib/cucumber/formatter/duration.rb
397
404
  - lib/cucumber/formatter/duration_extractor.rb
398
- - lib/cucumber/formatter/errors.rb
399
405
  - lib/cucumber/formatter/fail_fast.rb
400
- - lib/cucumber/formatter/fanout.rb
406
+ - lib/cucumber/formatter/global_hooks_summary.rb
401
407
  - lib/cucumber/formatter/html.rb
402
408
  - lib/cucumber/formatter/http_io.rb
403
409
  - lib/cucumber/formatter/ignore_missing_messages.rb
@@ -408,15 +414,10 @@ files:
408
414
  - lib/cucumber/formatter/junit.rb
409
415
  - lib/cucumber/formatter/message.rb
410
416
  - lib/cucumber/formatter/message_builder.rb
417
+ - lib/cucumber/formatter/message_handlers.rb
411
418
  - lib/cucumber/formatter/pretty.rb
412
419
  - lib/cucumber/formatter/progress.rb
413
420
  - lib/cucumber/formatter/publish_banner_printer.rb
414
- - lib/cucumber/formatter/query/hook_by_test_step.rb
415
- - lib/cucumber/formatter/query/pickle_by_test.rb
416
- - lib/cucumber/formatter/query/pickle_step_by_test_step.rb
417
- - lib/cucumber/formatter/query/step_definitions_by_test_step.rb
418
- - lib/cucumber/formatter/query/test_case_started_by_test_case.rb
419
- - lib/cucumber/formatter/query/test_run_started.rb
420
421
  - lib/cucumber/formatter/rerun.rb
421
422
  - lib/cucumber/formatter/stepdefs.rb
422
423
  - lib/cucumber/formatter/steps.rb
@@ -429,6 +430,7 @@ files:
429
430
  - lib/cucumber/gherkin/formatter/escaping.rb
430
431
  - lib/cucumber/gherkin/i18n.rb
431
432
  - lib/cucumber/gherkin/steps_parser.rb
433
+ - lib/cucumber/glue.rb
432
434
  - lib/cucumber/glue/dsl.rb
433
435
  - lib/cucumber/glue/hook.rb
434
436
  - lib/cucumber/glue/invoke_in_world.rb
@@ -446,7 +448,12 @@ files:
446
448
  - lib/cucumber/multiline_argument/doc_string.rb
447
449
  - lib/cucumber/platform.rb
448
450
  - lib/cucumber/project_initializer.rb
451
+ - lib/cucumber/query.rb
452
+ - lib/cucumber/rake.rb
453
+ - lib/cucumber/rake/forked_cucumber_runner.rb
454
+ - lib/cucumber/rake/in_process_cucumber_runner.rb
449
455
  - lib/cucumber/rake/task.rb
456
+ - lib/cucumber/repository.rb
450
457
  - lib/cucumber/rspec/disable_option_parser.rb
451
458
  - lib/cucumber/rspec/doubles.rb
452
459
  - lib/cucumber/running_test_case.rb
@@ -458,7 +465,6 @@ files:
458
465
  - lib/cucumber/runtime/step_hooks.rb
459
466
  - lib/cucumber/runtime/support_code.rb
460
467
  - lib/cucumber/runtime/user_interface.rb
461
- - lib/cucumber/step_definition_light.rb
462
468
  - lib/cucumber/step_definitions.rb
463
469
  - lib/cucumber/step_match.rb
464
470
  - lib/cucumber/step_match_search.rb
@@ -476,7 +482,6 @@ metadata:
476
482
  mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
477
483
  source_code_uri: https://github.com/cucumber/cucumber-ruby
478
484
  funding_uri: https://opencollective.com/cucumber
479
- post_install_message:
480
485
  rdoc_options:
481
486
  - "--charset=UTF-8"
482
487
  require_paths:
@@ -485,15 +490,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
485
490
  requirements:
486
491
  - - ">="
487
492
  - !ruby/object:Gem::Version
488
- version: '3.1'
493
+ version: '3.2'
489
494
  required_rubygems_version: !ruby/object:Gem::Requirement
490
495
  requirements:
491
496
  - - ">="
492
497
  - !ruby/object:Gem::Version
493
498
  version: 3.2.8
494
499
  requirements: []
495
- rubygems_version: 3.4.20
496
- signing_key:
500
+ rubygems_version: 4.0.10
497
501
  specification_version: 4
498
- summary: cucumber-10.2.0
502
+ summary: cucumber-11.1.1
499
503
  test_files: []
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cucumber
4
- module Formatter
5
- class TestCaseUnknownError < StandardError; end
6
-
7
- class TestStepUnknownError < StandardError; end
8
- end
9
- 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
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cucumber/formatter/errors'
4
-
5
- module Cucumber
6
- module Formatter
7
- module Query
8
- class HookByTestStep
9
- def initialize(config)
10
- @hook_id_by_test_step_id = {}
11
-
12
- config.on_event :test_step_created, &method(:on_test_step_created)
13
- config.on_event :hook_test_step_created, &method(:on_hook_test_step_created)
14
- end
15
-
16
- def hook_id(test_step)
17
- return @hook_id_by_test_step_id[test_step.id] if @hook_id_by_test_step_id.key?(test_step.id)
18
-
19
- raise TestStepUnknownError, "No hook found for #{test_step.id} }. Known: #{@hook_id_by_test_step_id.keys}"
20
- end
21
-
22
- private
23
-
24
- def on_test_step_created(event)
25
- @hook_id_by_test_step_id[event.test_step.id] = nil
26
- end
27
-
28
- def on_hook_test_step_created(event)
29
- @hook_id_by_test_step_id[event.test_step.id] = event.hook.id
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cucumber/formatter/errors'
4
-
5
- module Cucumber
6
- module Formatter
7
- module Query
8
- class PickleByTest
9
- def initialize(config)
10
- @pickle_id_by_test_case_id = {}
11
- config.on_event :test_case_created, &method(:on_test_case_created)
12
- end
13
-
14
- def pickle_id(test_case)
15
- return @pickle_id_by_test_case_id[test_case.id] if @pickle_id_by_test_case_id.key?(test_case.id)
16
-
17
- raise TestCaseUnknownError, "No pickle found for #{test_case.id} }. Known: #{@pickle_id_by_test_case_id.keys}"
18
- end
19
-
20
- private
21
-
22
- def on_test_case_created(event)
23
- @pickle_id_by_test_case_id[event.test_case.id] = event.pickle.id
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cucumber/formatter/errors'
4
-
5
- module Cucumber
6
- module Formatter
7
- module Query
8
- class PickleStepByTestStep
9
- def initialize(config)
10
- @pickle_id_step_by_test_step_id = {}
11
- config.on_event :test_step_created, &method(:on_test_step_created)
12
- end
13
-
14
- def pickle_step_id(test_step)
15
- return @pickle_id_step_by_test_step_id[test_step.id] if @pickle_id_step_by_test_step_id.key?(test_step.id)
16
-
17
- raise TestStepUnknownError, "No pickle step found for #{test_step.id} }. Known: #{@pickle_id_step_by_test_step_id.keys}"
18
- end
19
-
20
- private
21
-
22
- def on_test_step_created(event)
23
- @pickle_id_step_by_test_step_id[event.test_step.id] = event.pickle_step.id
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,42 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cucumber/formatter/errors'
4
-
5
- module Cucumber
6
- module Formatter
7
- module Query
8
- class StepDefinitionsByTestStep
9
- def initialize(config)
10
- @step_definition_ids_by_test_step_id = {}
11
- @step_match_arguments_by_test_step_id = {}
12
-
13
- config.on_event :test_step_created, &method(:on_test_step_created)
14
- config.on_event :step_activated, &method(:on_step_activated)
15
- end
16
-
17
- def step_definition_ids(test_step)
18
- return @step_definition_ids_by_test_step_id[test_step.id] if @step_definition_ids_by_test_step_id.key?(test_step.id)
19
-
20
- raise TestStepUnknownError, "No step definition found for #{test_step.id} }. Known: #{@step_definition_ids_by_test_step_id.keys}"
21
- end
22
-
23
- def step_match_arguments(test_step)
24
- return @step_match_arguments_by_test_step_id[test_step.id] if @step_match_arguments_by_test_step_id.key?(test_step.id)
25
-
26
- raise TestStepUnknownError, "No step match arguments found for #{test_step.id} }. Known: #{@step_match_arguments_by_test_step_id.keys}"
27
- end
28
-
29
- private
30
-
31
- def on_test_step_created(event)
32
- @step_definition_ids_by_test_step_id[event.test_step.id] = []
33
- end
34
-
35
- def on_step_activated(event)
36
- @step_definition_ids_by_test_step_id[event.test_step.id] << event.step_match.step_definition.id
37
- @step_match_arguments_by_test_step_id[event.test_step.id] = event.step_match.step_arguments
38
- end
39
- end
40
- end
41
- end
42
- end
@@ -1,44 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'cucumber/formatter/errors'
4
-
5
- module Cucumber
6
- module Formatter
7
- module Query
8
- class TestCaseStartedByTestCase
9
- def initialize(config)
10
- @config = config
11
- config.on_event :test_case_created, &method(:on_test_case_created)
12
- config.on_event :test_case_started, &method(:on_test_case_started)
13
-
14
- @attempts_by_test_case_id = {}
15
- @test_case_started_id_by_test_case_id = {}
16
- end
17
-
18
- def attempt_by_test_case(test_case)
19
- raise TestCaseUnknownError, "No test case found for #{test_case.id} }. Known: #{@attempts_by_test_case_id.keys}" unless @attempts_by_test_case_id.key?(test_case.id)
20
-
21
- @attempts_by_test_case_id[test_case.id]
22
- end
23
-
24
- def test_case_started_id_by_test_case(test_case)
25
- raise TestCaseUnknownError, "No test case found for #{test_case.id} }. Known: #{@test_case_started_id_by_test_case_id.keys}" unless @test_case_started_id_by_test_case_id.key?(test_case.id)
26
-
27
- @test_case_started_id_by_test_case_id[test_case.id]
28
- end
29
-
30
- private
31
-
32
- def on_test_case_created(event)
33
- @attempts_by_test_case_id[event.test_case.id] = 0
34
- @test_case_started_id_by_test_case_id[event.test_case.id] = nil
35
- end
36
-
37
- def on_test_case_started(event)
38
- @attempts_by_test_case_id[event.test_case.id] += 1
39
- @test_case_started_id_by_test_case_id[event.test_case.id] = @config.id_generator.new_id
40
- end
41
- end
42
- end
43
- end
44
- end