cucumber 10.2.0 → 11.1.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 (75) 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/base.rb +25 -0
  12. data/lib/cucumber/events/envelope.rb +29 -2
  13. data/lib/cucumber/events/gherkin_source_parsed.rb +12 -3
  14. data/lib/cucumber/events/gherkin_source_read.rb +11 -3
  15. data/lib/cucumber/events/hook_test_step_created.rb +12 -2
  16. data/lib/cucumber/events/step_activated.rb +13 -7
  17. data/lib/cucumber/events/step_definition_registered.rb +12 -4
  18. data/lib/cucumber/events/test_case_created.rb +11 -3
  19. data/lib/cucumber/events/test_case_finished.rb +12 -4
  20. data/lib/cucumber/events/test_case_ready.rb +10 -4
  21. data/lib/cucumber/events/test_case_started.rb +11 -2
  22. data/lib/cucumber/events/test_run_finished.rb +10 -3
  23. data/lib/cucumber/events/test_run_hook_finished.rb +19 -0
  24. data/lib/cucumber/events/test_run_hook_started.rb +20 -0
  25. data/lib/cucumber/events/test_run_started.rb +11 -2
  26. data/lib/cucumber/events/test_step_created.rb +12 -2
  27. data/lib/cucumber/events/test_step_finished.rb +12 -2
  28. data/lib/cucumber/events/test_step_started.rb +11 -2
  29. data/lib/cucumber/events/undefined_parameter_type.rb +11 -3
  30. data/lib/cucumber/events.rb +2 -0
  31. data/lib/cucumber/filters/fire_before_all_hooks.rb +36 -0
  32. data/lib/cucumber/filters/randomizer.rb +5 -5
  33. data/lib/cucumber/filters/reverser.rb +41 -0
  34. data/lib/cucumber/filters.rb +1 -12
  35. data/lib/cucumber/formatter/ansicolor.rb +3 -0
  36. data/lib/cucumber/formatter/console.rb +15 -7
  37. data/lib/cucumber/formatter/console_issues.rb +5 -5
  38. data/lib/cucumber/formatter/duration_extractor.rb +2 -0
  39. data/lib/cucumber/formatter/fail_fast.rb +3 -4
  40. data/lib/cucumber/formatter/global_hooks_summary.rb +36 -0
  41. data/lib/cucumber/formatter/html.rb +1 -3
  42. data/lib/cucumber/formatter/json.rb +5 -3
  43. data/lib/cucumber/formatter/junit.rb +5 -34
  44. data/lib/cucumber/formatter/message.rb +8 -4
  45. data/lib/cucumber/formatter/message_builder.rb +249 -143
  46. data/lib/cucumber/formatter/pretty.rb +2 -5
  47. data/lib/cucumber/formatter/progress.rb +1 -2
  48. data/lib/cucumber/formatter/rerun.rb +80 -30
  49. data/lib/cucumber/formatter/usage.rb +2 -3
  50. data/lib/cucumber/formatter.rb +3 -0
  51. data/lib/cucumber/glue/proto_world.rb +6 -4
  52. data/lib/cucumber/glue/registry_and_more.rb +122 -20
  53. data/lib/cucumber/glue.rb +3 -0
  54. data/lib/cucumber/multiline_argument/data_table.rb +0 -11
  55. data/lib/cucumber/platform.rb +2 -2
  56. data/lib/cucumber/query.rb +273 -0
  57. data/lib/cucumber/rake/forked_cucumber_runner.rb +57 -0
  58. data/lib/cucumber/rake/in_process_cucumber_runner.rb +27 -0
  59. data/lib/cucumber/rake/task.rb +36 -106
  60. data/lib/cucumber/rake.rb +3 -0
  61. data/lib/cucumber/repository.rb +136 -0
  62. data/lib/cucumber/rspec/disable_option_parser.rb +3 -3
  63. data/lib/cucumber/runtime/user_interface.rb +2 -2
  64. data/lib/cucumber/runtime.rb +29 -9
  65. data/lib/cucumber/step_match.rb +1 -1
  66. data/lib/cucumber.rb +2 -13
  67. metadata +33 -30
  68. data/lib/cucumber/formatter/errors.rb +0 -9
  69. data/lib/cucumber/formatter/query/hook_by_test_step.rb +0 -34
  70. data/lib/cucumber/formatter/query/pickle_by_test.rb +0 -28
  71. data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +0 -28
  72. data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +0 -42
  73. data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +0 -44
  74. data/lib/cucumber/formatter/query/test_run_started.rb +0 -17
  75. 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
@@ -41,8 +41,8 @@ module Cucumber
41
41
  # be a path to a file, or if it's an image it may also be a Base64 encoded image.
42
42
  # The embedded data may or may not be ignored, depending on what kind of formatter(s) are active.
43
43
  #
44
- def attach(src, media_type, filename)
45
- @visitor.attach(src, media_type, filename)
44
+ def attach(src, media_type, filename, streamed_file)
45
+ @visitor.attach(src, media_type, filename, streamed_file)
46
46
  end
47
47
 
48
48
  private
@@ -72,15 +72,13 @@ module Cucumber
72
72
 
73
73
  load_step_definitions
74
74
  fire_install_plugin_hook
75
- fire_before_all_hook unless dry_run?
76
75
  # TODO: can we remove this state?
77
76
  self.visitor = report
78
77
 
79
78
  receiver = Test::Runner.new(@configuration.event_bus)
80
79
  compile features, receiver, filters, @configuration.event_bus
81
- @configuration.notify :test_run_finished, !failure?
82
-
83
80
  fire_after_all_hook unless dry_run?
81
+ @configuration.notify :test_run_finished, !failure?
84
82
  end
85
83
 
86
84
  def features_paths
@@ -113,7 +111,7 @@ module Cucumber
113
111
  if @configuration.wip?
114
112
  summary_report.test_cases.total_passed.positive?
115
113
  else
116
- !summary_report.ok?(strict: @configuration.strict)
114
+ !summary_report.ok?(strict: @configuration.strict) || !global_hooks_summary_report.ok?
117
115
  end
118
116
  end
119
117
 
@@ -123,10 +121,6 @@ module Cucumber
123
121
  @support_code.fire_hook(:install_plugin, @configuration, registry_wrapper)
124
122
  end
125
123
 
126
- def fire_before_all_hook # :nodoc:
127
- @support_code.fire_hook(:before_all)
128
- end
129
-
130
124
  def fire_after_all_hook # :nodoc:
131
125
  @support_code.fire_hook(:after_all)
132
126
  end
@@ -136,6 +130,22 @@ module Cucumber
136
130
  @features ||= feature_files.map do |path|
137
131
  source = NormalisedEncodingFile.read(path)
138
132
  @configuration.notify :gherkin_source_read, path, source
133
+
134
+ # TODO: When core is v17+ switch the below code out to the following
135
+ # Cucumber::Core::Gherkin::Document.new(path, source).tap do |document|
136
+ # @configuration.notify(:envelope, document.to_envelope)
137
+ # end
138
+ to_envelope =
139
+ Cucumber::Messages::Envelope.new(
140
+ source: Cucumber::Messages::Source.new(
141
+ uri: path,
142
+ data: source,
143
+ media_type: 'text/x.cucumber.gherkin+plain'
144
+ )
145
+ )
146
+
147
+ @configuration.notify(:envelope, to_envelope)
148
+
139
149
  Cucumber::Core::Gherkin::Document.new(path, source)
140
150
  end
141
151
  end
@@ -191,16 +201,24 @@ module Cucumber
191
201
  def report
192
202
  return @report if @report
193
203
 
194
- reports = [summary_report] + formatters
204
+ reports = [message_builder, summary_report, global_hooks_summary_report] + formatters
195
205
  reports << fail_fast_report if @configuration.fail_fast?
196
206
  reports << publish_banner_printer unless @configuration.publish_quiet?
197
207
  @report ||= Formatter::Fanout.new(reports)
198
208
  end
199
209
 
210
+ def message_builder
211
+ @message_builder ||= Formatter::MessageBuilder.new(@configuration)
212
+ end
213
+
200
214
  def summary_report
201
215
  @summary_report ||= Core::Report::Summary.new(@configuration.event_bus)
202
216
  end
203
217
 
218
+ def global_hooks_summary_report
219
+ @global_hooks_summary_report ||= Formatter::GlobalHooksSummary.new(@configuration)
220
+ end
221
+
204
222
  def fail_fast_report
205
223
  @fail_fast_report ||= Formatter::FailFast.new(@configuration)
206
224
  end
@@ -244,6 +262,7 @@ module Cucumber
244
262
  filters << Cucumber::Core::Test::NameFilter.new(name_regexps)
245
263
  filters << Cucumber::Core::Test::LocationsFilter.new(filespecs.locations)
246
264
  filters << Filters::Randomizer.new(@configuration.seed) if @configuration.randomize?
265
+ filters << Filters::Reverser.new if @configuration.reverse_order?
247
266
  # TODO: can we just use Glue::RegistryAndMore's step definitions directly?
248
267
  step_match_search = StepMatchSearch.new(@support_code.registry.method(:step_matches), @configuration)
249
268
  filters << Filters::ActivateSteps.new(step_match_search, @configuration)
@@ -255,6 +274,7 @@ module Cucumber
255
274
  filters << Filters::ApplyAfterHooks.new(@support_code)
256
275
  filters << Filters::ApplyAroundHooks.new(@support_code)
257
276
  filters << Filters::BroadcastTestRunStartedEvent.new(@configuration)
277
+ filters << Filters::FireBeforeAllHooks.new(@support_code)
258
278
  filters << Filters::Quit.new
259
279
  end
260
280
 
@@ -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.0
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,7 @@ files:
353
353
  - lib/cucumber/encoding.rb
354
354
  - lib/cucumber/errors.rb
355
355
  - lib/cucumber/events.rb
356
+ - lib/cucumber/events/base.rb
356
357
  - lib/cucumber/events/envelope.rb
357
358
  - lib/cucumber/events/gherkin_source_parsed.rb
358
359
  - lib/cucumber/events/gherkin_source_read.rb
@@ -364,6 +365,8 @@ files:
364
365
  - lib/cucumber/events/test_case_ready.rb
365
366
  - lib/cucumber/events/test_case_started.rb
366
367
  - lib/cucumber/events/test_run_finished.rb
368
+ - lib/cucumber/events/test_run_hook_finished.rb
369
+ - lib/cucumber/events/test_run_hook_started.rb
367
370
  - lib/cucumber/events/test_run_started.rb
368
371
  - lib/cucumber/events/test_step_created.rb
369
372
  - lib/cucumber/events/test_step_finished.rb
@@ -378,14 +381,17 @@ files:
378
381
  - lib/cucumber/filters/apply_before_hooks.rb
379
382
  - lib/cucumber/filters/broadcast_test_case_ready_event.rb
380
383
  - lib/cucumber/filters/broadcast_test_run_started_event.rb
384
+ - lib/cucumber/filters/fire_before_all_hooks.rb
381
385
  - lib/cucumber/filters/gated_receiver.rb
382
386
  - lib/cucumber/filters/prepare_world.rb
383
387
  - lib/cucumber/filters/quit.rb
384
388
  - lib/cucumber/filters/randomizer.rb
385
389
  - lib/cucumber/filters/retry.rb
390
+ - lib/cucumber/filters/reverser.rb
386
391
  - lib/cucumber/filters/tag_limits.rb
387
392
  - lib/cucumber/filters/tag_limits/test_case_index.rb
388
393
  - lib/cucumber/filters/tag_limits/verifier.rb
394
+ - lib/cucumber/formatter.rb
389
395
  - lib/cucumber/formatter/ansicolor.rb
390
396
  - lib/cucumber/formatter/ast_lookup.rb
391
397
  - lib/cucumber/formatter/backtrace_filter.rb
@@ -395,9 +401,9 @@ files:
395
401
  - lib/cucumber/formatter/curl_option_parser.rb
396
402
  - lib/cucumber/formatter/duration.rb
397
403
  - lib/cucumber/formatter/duration_extractor.rb
398
- - lib/cucumber/formatter/errors.rb
399
404
  - lib/cucumber/formatter/fail_fast.rb
400
405
  - 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
@@ -411,12 +417,6 @@ files:
411
417
  - lib/cucumber/formatter/pretty.rb
412
418
  - lib/cucumber/formatter/progress.rb
413
419
  - 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
420
  - lib/cucumber/formatter/rerun.rb
421
421
  - lib/cucumber/formatter/stepdefs.rb
422
422
  - lib/cucumber/formatter/steps.rb
@@ -429,6 +429,7 @@ files:
429
429
  - lib/cucumber/gherkin/formatter/escaping.rb
430
430
  - lib/cucumber/gherkin/i18n.rb
431
431
  - lib/cucumber/gherkin/steps_parser.rb
432
+ - lib/cucumber/glue.rb
432
433
  - lib/cucumber/glue/dsl.rb
433
434
  - lib/cucumber/glue/hook.rb
434
435
  - lib/cucumber/glue/invoke_in_world.rb
@@ -446,7 +447,12 @@ files:
446
447
  - lib/cucumber/multiline_argument/doc_string.rb
447
448
  - lib/cucumber/platform.rb
448
449
  - lib/cucumber/project_initializer.rb
450
+ - lib/cucumber/query.rb
451
+ - lib/cucumber/rake.rb
452
+ - lib/cucumber/rake/forked_cucumber_runner.rb
453
+ - lib/cucumber/rake/in_process_cucumber_runner.rb
449
454
  - lib/cucumber/rake/task.rb
455
+ - lib/cucumber/repository.rb
450
456
  - lib/cucumber/rspec/disable_option_parser.rb
451
457
  - lib/cucumber/rspec/doubles.rb
452
458
  - lib/cucumber/running_test_case.rb
@@ -458,7 +464,6 @@ files:
458
464
  - lib/cucumber/runtime/step_hooks.rb
459
465
  - lib/cucumber/runtime/support_code.rb
460
466
  - lib/cucumber/runtime/user_interface.rb
461
- - lib/cucumber/step_definition_light.rb
462
467
  - lib/cucumber/step_definitions.rb
463
468
  - lib/cucumber/step_match.rb
464
469
  - lib/cucumber/step_match_search.rb
@@ -476,7 +481,6 @@ metadata:
476
481
  mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
477
482
  source_code_uri: https://github.com/cucumber/cucumber-ruby
478
483
  funding_uri: https://opencollective.com/cucumber
479
- post_install_message:
480
484
  rdoc_options:
481
485
  - "--charset=UTF-8"
482
486
  require_paths:
@@ -485,15 +489,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
485
489
  requirements:
486
490
  - - ">="
487
491
  - !ruby/object:Gem::Version
488
- version: '3.1'
492
+ version: '3.2'
489
493
  required_rubygems_version: !ruby/object:Gem::Requirement
490
494
  requirements:
491
495
  - - ">="
492
496
  - !ruby/object:Gem::Version
493
497
  version: 3.2.8
494
498
  requirements: []
495
- rubygems_version: 3.4.20
496
- signing_key:
499
+ rubygems_version: 4.0.10
497
500
  specification_version: 4
498
- summary: cucumber-10.2.0
501
+ summary: cucumber-11.1.0
499
502
  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,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
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cucumber
4
- module Formatter
5
- module Query
6
- class TestRunStarted
7
- def initialize(config)
8
- @config = config
9
- end
10
-
11
- def id
12
- @id ||= @config.id_generator.new_id
13
- end
14
- end
15
- end
16
- end
17
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cucumber
4
- # TODO: pointless, ancient, kill with fire.
5
- # Only used for keeping track of available and invoked step definitions
6
- # in a way that also works for other programming languages (i.e. cuke4duke)
7
- # Used for reporting purposes only (usage formatter).
8
- class StepDefinitionLight
9
- attr_reader :regexp_source, :location
10
-
11
- def initialize(regexp_source, location)
12
- @regexp_source = regexp_source
13
- @location = location
14
- Cucumber.deprecate(
15
- 'StepDefinitionLight class is no longer a supported part of cucumber',
16
- '#initialize',
17
- '11.0.0'
18
- )
19
- end
20
-
21
- def eql?(other)
22
- regexp_source == other.regexp_source && location == other.location
23
- end
24
-
25
- def hash
26
- regexp_source.hash + 31 * location.to_s.hash
27
- end
28
- end
29
- end