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.
- checksums.yaml +4 -4
- data/README.md +17 -8
- data/VERSION +1 -1
- data/lib/cucumber/cli/configuration.rb +1 -1
- data/lib/cucumber/cli/main.rb +22 -0
- data/lib/cucumber/cli/options.rb +3 -18
- data/lib/cucumber/cli/profile_loader.rb +2 -2
- data/lib/cucumber/cli/rerun_file.rb +1 -1
- data/lib/cucumber/cli.rb +3 -0
- data/lib/cucumber/configuration.rb +33 -24
- data/lib/cucumber/events/attach_called.rb +19 -0
- data/lib/cucumber/events/base.rb +25 -0
- data/lib/cucumber/events/envelope.rb +29 -2
- data/lib/cucumber/events/gherkin_source_parsed.rb +12 -3
- data/lib/cucumber/events/gherkin_source_read.rb +11 -3
- data/lib/cucumber/events/hook_test_step_created.rb +12 -2
- data/lib/cucumber/events/step_activated.rb +13 -7
- data/lib/cucumber/events/step_definition_registered.rb +12 -4
- data/lib/cucumber/events/test_case_created.rb +11 -3
- data/lib/cucumber/events/test_case_finished.rb +12 -4
- data/lib/cucumber/events/test_case_ready.rb +10 -4
- data/lib/cucumber/events/test_case_started.rb +11 -2
- data/lib/cucumber/events/test_run_finished.rb +10 -3
- data/lib/cucumber/events/test_run_hook_finished.rb +19 -0
- data/lib/cucumber/events/test_run_hook_started.rb +20 -0
- data/lib/cucumber/events/test_run_started.rb +11 -2
- data/lib/cucumber/events/test_step_created.rb +12 -2
- data/lib/cucumber/events/test_step_finished.rb +12 -2
- data/lib/cucumber/events/test_step_started.rb +11 -2
- data/lib/cucumber/events/undefined_parameter_type.rb +11 -3
- data/lib/cucumber/events.rb +3 -0
- data/lib/cucumber/filters/fire_before_all_hooks.rb +36 -0
- data/lib/cucumber/filters/randomizer.rb +5 -5
- data/lib/cucumber/filters/reverser.rb +41 -0
- data/lib/cucumber/filters.rb +1 -12
- data/lib/cucumber/formatter/ansicolor.rb +3 -0
- data/lib/cucumber/formatter/console.rb +19 -11
- data/lib/cucumber/formatter/console_issues.rb +5 -5
- data/lib/cucumber/formatter/duration_extractor.rb +2 -2
- data/lib/cucumber/formatter/fail_fast.rb +3 -4
- data/lib/cucumber/formatter/global_hooks_summary.rb +36 -0
- data/lib/cucumber/formatter/html.rb +6 -6
- data/lib/cucumber/formatter/json.rb +14 -10
- data/lib/cucumber/formatter/junit.rb +5 -34
- data/lib/cucumber/formatter/message.rb +5 -5
- data/lib/cucumber/formatter/message_builder.rb +255 -143
- data/lib/cucumber/formatter/message_handlers.rb +13 -0
- data/lib/cucumber/formatter/pretty.rb +7 -9
- data/lib/cucumber/formatter/progress.rb +2 -2
- data/lib/cucumber/formatter/rerun.rb +82 -31
- data/lib/cucumber/formatter/summary.rb +15 -1
- data/lib/cucumber/formatter/usage.rb +2 -3
- data/lib/cucumber/formatter.rb +3 -0
- data/lib/cucumber/glue/proto_world.rb +3 -2
- data/lib/cucumber/glue/registry_and_more.rb +122 -20
- data/lib/cucumber/glue.rb +3 -0
- data/lib/cucumber/multiline_argument/data_table.rb +0 -11
- data/lib/cucumber/platform.rb +2 -2
- data/lib/cucumber/query.rb +273 -0
- data/lib/cucumber/rake/forked_cucumber_runner.rb +57 -0
- data/lib/cucumber/rake/in_process_cucumber_runner.rb +27 -0
- data/lib/cucumber/rake/task.rb +36 -106
- data/lib/cucumber/rake.rb +3 -0
- data/lib/cucumber/repository.rb +136 -0
- data/lib/cucumber/rspec/disable_option_parser.rb +3 -3
- data/lib/cucumber/runtime/user_interface.rb +4 -2
- data/lib/cucumber/runtime.rb +39 -17
- data/lib/cucumber/step_match.rb +1 -1
- data/lib/cucumber.rb +2 -13
- metadata +35 -31
- data/lib/cucumber/formatter/errors.rb +0 -9
- data/lib/cucumber/formatter/fanout.rb +0 -28
- data/lib/cucumber/formatter/query/hook_by_test_step.rb +0 -34
- data/lib/cucumber/formatter/query/pickle_by_test.rb +0 -28
- data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +0 -28
- data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +0 -42
- data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +0 -44
- data/lib/cucumber/formatter/query/test_run_started.rb +0 -17
- data/lib/cucumber/step_definition_light.rb +0 -29
|
@@ -2,12 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
require 'optparse'
|
|
4
4
|
|
|
5
|
-
module Spec
|
|
6
|
-
module Runner
|
|
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
|
|
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 :
|
|
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
|
-
@
|
|
46
|
+
@configuration.notify(:attach_called, src, media_type, filename)
|
|
47
|
+
self
|
|
46
48
|
end
|
|
47
49
|
|
|
48
50
|
private
|
data/lib/cucumber/runtime.rb
CHANGED
|
@@ -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
|
-
|
|
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
|
|
192
|
-
|
|
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
|
-
|
|
195
|
-
|
|
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
|
|
data/lib/cucumber/step_match.rb
CHANGED
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:
|
|
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:
|
|
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:
|
|
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:
|
|
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: '
|
|
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: '
|
|
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.
|
|
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.
|
|
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: '
|
|
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: '
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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/
|
|
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.
|
|
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:
|
|
496
|
-
signing_key:
|
|
500
|
+
rubygems_version: 4.0.10
|
|
497
501
|
specification_version: 4
|
|
498
|
-
summary: cucumber-
|
|
502
|
+
summary: cucumber-11.1.1
|
|
499
503
|
test_files: []
|
|
@@ -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
|