cucumber 9.2.1 → 10.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.
- checksums.yaml +4 -4
- data/LICENSE +17 -18
- data/README.md +8 -8
- data/VERSION +1 -1
- data/lib/cucumber/cli/main.rb +1 -2
- data/lib/cucumber/configuration.rb +1 -1
- data/lib/cucumber/deprecate.rb +1 -1
- data/lib/cucumber/filters/broadcast_test_case_ready_event.rb +1 -1
- data/lib/cucumber/formatter/backtrace_filter.rb +58 -31
- data/lib/cucumber/formatter/curl_option_parser.rb +2 -1
- data/lib/cucumber/formatter/message_builder.rb +12 -4
- data/lib/cucumber/formatter/query/test_run_started.rb +17 -0
- data/lib/cucumber/glue/dsl.rb +2 -3
- data/lib/cucumber/glue/hook.rb +13 -20
- data/lib/cucumber/glue/invoke_in_world.rb +11 -2
- data/lib/cucumber/glue/proto_world.rb +0 -1
- data/lib/cucumber/glue/registry_and_more.rb +22 -44
- data/lib/cucumber/glue/snippet.rb +20 -17
- data/lib/cucumber/glue/step_definition.rb +0 -1
- data/lib/cucumber/hooks.rb +3 -3
- data/lib/cucumber/multiline_argument/data_table.rb +8 -2
- data/lib/cucumber/runtime/after_hooks.rb +1 -3
- data/lib/cucumber/runtime.rb +2 -2
- data/lib/cucumber/step_definition_light.rb +5 -0
- data/lib/cucumber.rb +11 -1
- metadata +51 -69
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c0b8e35a28f81c7641e8ec04c2831c8884df1bb505d275f9a809cce801848d6
|
4
|
+
data.tar.gz: e28e2cb4ab3a3a3683ebf7ceaa1ff6dcb96b9a785ecb8ceb7d16d43f529678a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a734880b62afa6292433b3c553a6956c3bdb0520a9dc81653cc194fe6e878a94579638b1891dce864871902828d675dff08a726de690e7828eb018d12220878
|
7
|
+
data.tar.gz: 951dc39cd2b6dee12a3e4528d14ecffd041e0d13f6d2d247f1637376fd0b117180783ec3bdc2b03b1b998645440107a1001f01a83f48875b63cb43a4f54d4c0a
|
data/LICENSE
CHANGED
@@ -1,22 +1,21 @@
|
|
1
|
-
|
1
|
+
MIT License
|
2
2
|
|
3
|
-
Copyright (c) Aslak Hellesøy
|
3
|
+
Copyright (c) 2008 Aslak Hellesøy and contributors
|
4
4
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
the following conditions:
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
12
11
|
|
13
|
-
The above copyright notice and this permission notice shall be
|
14
|
-
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
15
14
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
OF
|
22
|
-
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<img src="docs/img/
|
1
|
+
<img src="docs/img/logo.svg" alt="" width="75" />
|
2
2
|
|
3
3
|
# Cucumber
|
4
4
|
|
@@ -45,11 +45,12 @@ Later in this document, bundler is considered being used so all commands are usi
|
|
45
45
|
|
46
46
|
### Supported platforms
|
47
47
|
|
48
|
+
- Ruby 3.4
|
49
|
+
- Ruby 3.3
|
48
50
|
- Ruby 3.2
|
49
51
|
- Ruby 3.1
|
50
52
|
- Ruby 3.0
|
51
|
-
-
|
52
|
-
- TruffleRuby 22.0.0+
|
53
|
+
- TruffleRuby 24.0.0+
|
53
54
|
- JRuby 9.4+ (with [some limitations](https://github.com/cucumber/cucumber-ruby/blob/main/docs/jruby-limitations.md))
|
54
55
|
|
55
56
|
### Ruby on Rails
|
@@ -91,12 +92,11 @@ Feature: Rule Sample
|
|
91
92
|
Given this will fail
|
92
93
|
When I do an action
|
93
94
|
Then some results should be there
|
94
|
-
|
95
95
|
```
|
96
96
|
|
97
97
|
### Automate your specification
|
98
98
|
|
99
|
-
And a file named `
|
99
|
+
And a file named `rule_steps.rb` in `features/step_definitions` with:
|
100
100
|
|
101
101
|
```ruby
|
102
102
|
# features/step_definitions/steps.rb
|
@@ -144,9 +144,9 @@ You can also find documentation on the command line possibilities in [features/d
|
|
144
144
|
|
145
145
|
- Getting started, writing features, step definitions, and more: https://cucumber.io/docs
|
146
146
|
- Ruby API Documentation: http://www.rubydoc.info/github/cucumber/cucumber-ruby/
|
147
|
-
- Community support forum: https://
|
148
|
-
-
|
147
|
+
- Community support forum: https://github.com/orgs/cucumber/discussions
|
148
|
+
- Discord: [register for an account](https://cucumber.io/docs/community/get-in-touch#discord)
|
149
149
|
|
150
150
|
## Copyright
|
151
151
|
|
152
|
-
Copyright (c) Cucumber
|
152
|
+
Copyright (c) Cucumber and Contributors. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
10.0.0
|
data/lib/cucumber/cli/main.rb
CHANGED
@@ -93,8 +93,7 @@ module Cucumber
|
|
93
93
|
def runtime(existing_runtime)
|
94
94
|
return Runtime.new(configuration) unless existing_runtime
|
95
95
|
|
96
|
-
existing_runtime.configure(configuration)
|
97
|
-
existing_runtime
|
96
|
+
existing_runtime.tap { |runtime| runtime.configure(configuration) }
|
98
97
|
end
|
99
98
|
end
|
100
99
|
end
|
data/lib/cucumber/deprecate.rb
CHANGED
@@ -6,7 +6,7 @@ require 'cucumber/gherkin/formatter/ansi_escapes'
|
|
6
6
|
module Cucumber
|
7
7
|
def self.deprecate(message, method, remove_after_version)
|
8
8
|
$stderr.puts(
|
9
|
-
"\nWARNING:
|
9
|
+
"\nWARNING: #{method} is deprecated" \
|
10
10
|
" and will be removed after version #{remove_after_version}. #{message}.\n" \
|
11
11
|
"(Called from #{caller(3..3).first})"
|
12
12
|
)
|
@@ -4,52 +4,79 @@ require 'cucumber/platform'
|
|
4
4
|
|
5
5
|
module Cucumber
|
6
6
|
module Formatter
|
7
|
-
@backtrace_filters = %w[
|
8
|
-
/vendor/rails
|
9
|
-
lib/cucumber
|
10
|
-
bin/cucumber:
|
11
|
-
lib/rspec
|
12
|
-
gems/
|
13
|
-
site_ruby/
|
14
|
-
minitest
|
15
|
-
test/unit
|
16
|
-
.gem/ruby
|
17
|
-
bin/bundle
|
18
|
-
rdebug-ide
|
19
|
-
]
|
20
|
-
|
21
|
-
@backtrace_filters << RbConfig::CONFIG['rubyarchdir'] if RbConfig::CONFIG['rubyarchdir']
|
22
|
-
@backtrace_filters << RbConfig::CONFIG['rubylibdir'] if RbConfig::CONFIG['rubylibdir']
|
23
|
-
|
24
|
-
@backtrace_filters << 'org/jruby/' if ::Cucumber::JRUBY
|
25
|
-
@backtrace_filters << '<internal:' if RUBY_ENGINE == 'truffleruby'
|
26
|
-
|
27
|
-
BACKTRACE_FILTER_PATTERNS = Regexp.new(@backtrace_filters.join('|'))
|
28
|
-
|
29
7
|
class BacktraceFilter
|
30
8
|
def initialize(exception)
|
31
9
|
@exception = exception
|
10
|
+
@backtrace_filters = standard_ruby_paths + dynamic_ruby_paths
|
32
11
|
end
|
33
12
|
|
34
13
|
def exception
|
35
14
|
return @exception if ::Cucumber.use_full_backtrace
|
36
15
|
|
37
|
-
pwd_pattern = /#{::Regexp.escape(::Dir.pwd)}\//m
|
38
16
|
backtrace = @exception.backtrace.map { |line| line.gsub(pwd_pattern, './') }
|
39
|
-
|
40
|
-
filtered = (backtrace || []).reject do |line|
|
41
|
-
line =~ BACKTRACE_FILTER_PATTERNS
|
42
|
-
end
|
17
|
+
filtered = backtrace.reject { |line| line.match?(backtrace_filter_patterns) }
|
43
18
|
|
44
19
|
if ::ENV['CUCUMBER_TRUNCATE_OUTPUT']
|
45
|
-
# Strip off file locations
|
46
20
|
filtered = filtered.map do |line|
|
47
|
-
|
21
|
+
# Strip off file locations
|
22
|
+
match = regexp_filter.match(line)
|
23
|
+
match ? match[1] : line
|
48
24
|
end
|
49
25
|
end
|
50
26
|
|
51
|
-
@exception.set_backtrace(filtered)
|
52
|
-
|
27
|
+
@exception.tap { |error_object| error_object.set_backtrace(filtered) }
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def backtrace_filter_patterns
|
33
|
+
Regexp.new(@backtrace_filters.join('|'))
|
34
|
+
end
|
35
|
+
|
36
|
+
def dynamic_ruby_paths
|
37
|
+
[].tap do |paths|
|
38
|
+
paths << RbConfig::CONFIG['rubyarchdir'] if RbConfig::CONFIG['rubyarchdir']
|
39
|
+
paths << RbConfig::CONFIG['rubylibdir'] if RbConfig::CONFIG['rubylibdir']
|
40
|
+
|
41
|
+
paths << 'org/jruby/' if ::Cucumber::JRUBY
|
42
|
+
paths << '<internal:' if RUBY_ENGINE == 'truffleruby'
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def pwd_pattern
|
47
|
+
/#{::Regexp.escape(::Dir.pwd)}\//m
|
48
|
+
end
|
49
|
+
|
50
|
+
def regexp_filter
|
51
|
+
ruby_greater_than_three_four? ? three_four_filter : three_three_filter
|
52
|
+
end
|
53
|
+
|
54
|
+
def ruby_greater_than_three_four?
|
55
|
+
RUBY_VERSION.to_f >= 3.4
|
56
|
+
end
|
57
|
+
|
58
|
+
def standard_ruby_paths
|
59
|
+
%w[
|
60
|
+
/vendor/rails
|
61
|
+
lib/cucumber
|
62
|
+
bin/cucumber:
|
63
|
+
lib/rspec
|
64
|
+
gems/
|
65
|
+
site_ruby/
|
66
|
+
minitest
|
67
|
+
test/unit
|
68
|
+
.gem/ruby
|
69
|
+
bin/bundle
|
70
|
+
rdebug-ide
|
71
|
+
]
|
72
|
+
end
|
73
|
+
|
74
|
+
def three_four_filter
|
75
|
+
/(.*):in '/
|
76
|
+
end
|
77
|
+
|
78
|
+
def three_three_filter
|
79
|
+
/(.*):in `/
|
53
80
|
end
|
54
81
|
end
|
55
82
|
end
|
@@ -7,11 +7,12 @@ require 'cucumber/formatter/query/pickle_by_test'
|
|
7
7
|
require 'cucumber/formatter/query/pickle_step_by_test_step'
|
8
8
|
require 'cucumber/formatter/query/step_definitions_by_test_step'
|
9
9
|
require 'cucumber/formatter/query/test_case_started_by_test_case'
|
10
|
+
require 'cucumber/formatter/query/test_run_started'
|
10
11
|
|
11
12
|
module Cucumber
|
12
13
|
module Formatter
|
13
14
|
class MessageBuilder
|
14
|
-
include Cucumber::Messages::TimeConversion
|
15
|
+
include Cucumber::Messages::Helpers::TimeConversion
|
15
16
|
|
16
17
|
def initialize(config)
|
17
18
|
@config = config
|
@@ -21,6 +22,7 @@ module Cucumber
|
|
21
22
|
@pickle_step_by_test_step = Query::PickleStepByTestStep.new(config)
|
22
23
|
@step_definitions_by_test_step = Query::StepDefinitionsByTestStep.new(config)
|
23
24
|
@test_case_started_by_test_case = Query::TestCaseStartedByTestCase.new(config)
|
25
|
+
@test_run_started = Query::TestRunStarted.new(config)
|
24
26
|
|
25
27
|
config.on_event :envelope, &method(:on_envelope)
|
26
28
|
config.on_event :gherkin_source_read, &method(:on_gherkin_source_read)
|
@@ -34,6 +36,7 @@ module Cucumber
|
|
34
36
|
config.on_event :undefined_parameter_type, &method(:on_undefined_parameter_type)
|
35
37
|
|
36
38
|
@test_case_by_step_id = {}
|
39
|
+
@current_test_run_started_id = nil
|
37
40
|
@current_test_case_started_id = nil
|
38
41
|
@current_test_step_id = nil
|
39
42
|
end
|
@@ -94,7 +97,8 @@ module Cucumber
|
|
94
97
|
test_case: Cucumber::Messages::TestCase.new(
|
95
98
|
id: event.test_case.id,
|
96
99
|
pickle_id: @pickle_by_test.pickle_id(event.test_case),
|
97
|
-
test_steps: event.test_case.test_steps.map { |step| test_step_to_message(step) }
|
100
|
+
test_steps: event.test_case.test_steps.map { |step| test_step_to_message(step) },
|
101
|
+
test_run_started_id: @current_test_run_started_id
|
98
102
|
)
|
99
103
|
)
|
100
104
|
|
@@ -150,9 +154,12 @@ module Cucumber
|
|
150
154
|
end
|
151
155
|
|
152
156
|
def on_test_run_started(*)
|
157
|
+
@current_test_run_started_id = @test_run_started.id
|
158
|
+
|
153
159
|
message = Cucumber::Messages::Envelope.new(
|
154
160
|
test_run_started: Cucumber::Messages::TestRunStarted.new(
|
155
|
-
timestamp: time_to_timestamp(Time.now)
|
161
|
+
timestamp: time_to_timestamp(Time.now),
|
162
|
+
id: @current_test_run_started_id
|
156
163
|
)
|
157
164
|
)
|
158
165
|
|
@@ -245,7 +252,8 @@ module Cucumber
|
|
245
252
|
message = Cucumber::Messages::Envelope.new(
|
246
253
|
test_run_finished: Cucumber::Messages::TestRunFinished.new(
|
247
254
|
timestamp: time_to_timestamp(Time.now),
|
248
|
-
success: event.success
|
255
|
+
success: event.success,
|
256
|
+
test_run_started_id: @current_test_run_started_id
|
249
257
|
)
|
250
258
|
)
|
251
259
|
|
data/lib/cucumber/glue/dsl.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'cucumber/cucumber_expressions/parameter_type'
|
4
|
-
require 'cucumber/deprecate'
|
5
4
|
|
6
5
|
module Cucumber
|
7
6
|
module Glue
|
@@ -19,8 +18,8 @@ module Cucumber
|
|
19
18
|
@rb_language.build_rb_world_factory(world_modules, namespaced_world_modules, proc)
|
20
19
|
end
|
21
20
|
|
22
|
-
def register_rb_hook(
|
23
|
-
@rb_language.register_rb_hook(
|
21
|
+
def register_rb_hook(type, tag_names, proc, name: nil)
|
22
|
+
@rb_language.register_rb_hook(type, tag_names, proc, name: name)
|
24
23
|
end
|
25
24
|
|
26
25
|
def define_parameter_type(parameter_type)
|
data/lib/cucumber/glue/hook.rb
CHANGED
@@ -12,10 +12,9 @@ module Cucumber
|
|
12
12
|
@id = id
|
13
13
|
@registry = registry
|
14
14
|
@name = name
|
15
|
-
@tag_expressions =
|
15
|
+
@tag_expressions = tag_expressions
|
16
16
|
@proc = proc
|
17
17
|
@location = Cucumber::Core::Test::Location.from_source_location(*@proc.source_location)
|
18
|
-
fail_for_old_style_tag_expressions(@tag_expressions)
|
19
18
|
end
|
20
19
|
|
21
20
|
def invoke(pseudo_method, arguments, &block)
|
@@ -29,12 +28,13 @@ module Cucumber
|
|
29
28
|
)
|
30
29
|
end
|
31
30
|
|
32
|
-
def to_envelope
|
31
|
+
def to_envelope(type)
|
33
32
|
Cucumber::Messages::Envelope.new(
|
34
33
|
hook: Cucumber::Messages::Hook.new(
|
35
34
|
id: id,
|
36
35
|
name: name,
|
37
36
|
tag_expression: tag_expressions.empty? ? nil : tag_expressions.join(' '),
|
37
|
+
type: hook_type_to_enum_value[type.to_sym],
|
38
38
|
source_reference: Cucumber::Messages::SourceReference.new(
|
39
39
|
uri: location.file,
|
40
40
|
location: Cucumber::Messages::Location.new(
|
@@ -47,23 +47,16 @@ module Cucumber
|
|
47
47
|
|
48
48
|
private
|
49
49
|
|
50
|
-
def
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
end
|
61
|
-
|
62
|
-
next unless tag_expression.include?(',')
|
63
|
-
|
64
|
-
warn("Found tagged hook with '#{tag_expression}'." \
|
65
|
-
"'@tag1,@tag2' is no longer supported, use '@tag or @tag2' instead.")
|
66
|
-
end
|
50
|
+
def hook_type_to_enum_value
|
51
|
+
{
|
52
|
+
before: 'BEFORE_TEST_CASE',
|
53
|
+
after: 'AFTER_TEST_CASE',
|
54
|
+
around: nil, # This needs deleting and removing from cucumber-ruby in v11
|
55
|
+
after_step: 'AFTER_TEST_STEP',
|
56
|
+
install_plugin: 'BEFORE_TEST_RUN',
|
57
|
+
before_all: 'BEFORE_TEST_RUN',
|
58
|
+
after_all: 'AFTER_TEST_RUN'
|
59
|
+
}
|
67
60
|
end
|
68
61
|
end
|
69
62
|
end
|
@@ -14,7 +14,10 @@ module Cucumber
|
|
14
14
|
return unless instance_exec_pos
|
15
15
|
|
16
16
|
replacement_line = instance_exec_pos + INSTANCE_EXEC_OFFSET
|
17
|
-
|
17
|
+
if pseudo_method
|
18
|
+
pattern = RUBY_VERSION >= '3.4' ? /'.*'/ : /`.*'/
|
19
|
+
backtrace[replacement_line].gsub!(pattern, "`#{pseudo_method}'")
|
20
|
+
end
|
18
21
|
|
19
22
|
depth = backtrace.count { |line| line == instance_exec_invocation_line }
|
20
23
|
end_pos = depth > 1 ? instance_exec_pos : -1
|
@@ -49,7 +52,13 @@ module Cucumber
|
|
49
52
|
def self.cucumber_run_with_backtrace_filtering(pseudo_method)
|
50
53
|
yield
|
51
54
|
rescue Exception => e
|
52
|
-
|
55
|
+
yield_line_number = __LINE__ - 2
|
56
|
+
instance_exec_invocation_line =
|
57
|
+
if RUBY_VERSION >= '3.4'
|
58
|
+
"#{__FILE__}:#{yield_line_number}:in '#{name}.#{__method__}'"
|
59
|
+
else
|
60
|
+
"#{__FILE__}:#{yield_line_number}:in `#{__method__}'"
|
61
|
+
end
|
53
62
|
replace_instance_exec_invocation_line!((e.backtrace || []), instance_exec_invocation_line, pseudo_method)
|
54
63
|
raise e
|
55
64
|
end
|
@@ -19,6 +19,11 @@ require 'cucumber/events/step_definition_registered'
|
|
19
19
|
|
20
20
|
module Cucumber
|
21
21
|
module Glue
|
22
|
+
def self.backtrace_line(proc, name)
|
23
|
+
location = Cucumber::Core::Test::Location.from_source_location(*proc.source_location)
|
24
|
+
"#{location}:in `#{name}'"
|
25
|
+
end
|
26
|
+
|
22
27
|
# Raised if a World block returns Nil.
|
23
28
|
class NilWorld < StandardError
|
24
29
|
def initialize
|
@@ -43,8 +48,7 @@ module Cucumber
|
|
43
48
|
|
44
49
|
# TODO: This class has too many responsibilities, split off
|
45
50
|
class RegistryAndMore
|
46
|
-
attr_reader :current_world,
|
47
|
-
:step_definitions
|
51
|
+
attr_reader :current_world, :step_definitions
|
48
52
|
|
49
53
|
all_keywords = ::Gherkin::DIALECTS.keys.map do |dialect_name|
|
50
54
|
dialect = ::Gherkin::Dialect.for(dialect_name)
|
@@ -54,6 +58,14 @@ module Cucumber
|
|
54
58
|
Glue::Dsl.alias_adverb(adverb.strip)
|
55
59
|
end
|
56
60
|
|
61
|
+
def self.cli_snippet_type_options
|
62
|
+
registry = CucumberExpressions::ParameterTypeRegistry.new
|
63
|
+
cucumber_expression_generator = CucumberExpressions::CucumberExpressionGenerator.new(registry)
|
64
|
+
Snippet::SNIPPET_TYPES.keys.sort_by(&:to_s).map do |type|
|
65
|
+
Snippet::SNIPPET_TYPES[type].cli_option_string(type, cucumber_expression_generator)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
57
69
|
def initialize(runtime, configuration)
|
58
70
|
@runtime = runtime
|
59
71
|
@configuration = configuration
|
@@ -73,9 +85,9 @@ module Cucumber
|
|
73
85
|
end
|
74
86
|
end
|
75
87
|
|
76
|
-
def register_rb_hook(
|
77
|
-
hook = add_hook(
|
78
|
-
@configuration.notify
|
88
|
+
def register_rb_hook(type, tag_expressions, proc, name: nil)
|
89
|
+
hook = add_hook(type, Hook.new(@configuration.id_generator.new_id, self, tag_expressions, proc, name: name))
|
90
|
+
@configuration.notify(:envelope, hook.to_envelope(type))
|
79
91
|
hook
|
80
92
|
end
|
81
93
|
|
@@ -129,8 +141,7 @@ module Cucumber
|
|
129
141
|
@current_world = WorldFactory.new(@world_proc).create_world
|
130
142
|
@current_world.extend(ProtoWorld.for(@runtime, test_case.language))
|
131
143
|
MultiTest.extend_with_best_assertion_library(@current_world)
|
132
|
-
@current_world.add_modules!(@world_modules || [],
|
133
|
-
@namespaced_world_modules || {})
|
144
|
+
@current_world.add_modules!(@world_modules || [], @namespaced_world_modules || {})
|
134
145
|
end
|
135
146
|
|
136
147
|
def end_scenario
|
@@ -155,8 +166,8 @@ module Cucumber
|
|
155
166
|
end
|
156
167
|
end
|
157
168
|
|
158
|
-
def add_hook(
|
159
|
-
hooks[
|
169
|
+
def add_hook(type, hook)
|
170
|
+
hooks[type.to_sym] << hook
|
160
171
|
hook
|
161
172
|
end
|
162
173
|
|
@@ -164,20 +175,8 @@ module Cucumber
|
|
164
175
|
@hooks = nil
|
165
176
|
end
|
166
177
|
|
167
|
-
def hooks_for(
|
168
|
-
hooks[
|
169
|
-
end
|
170
|
-
|
171
|
-
def unmatched_step_definitions
|
172
|
-
available_step_definition_hash.keys - invoked_step_definition_hash.keys
|
173
|
-
end
|
174
|
-
|
175
|
-
def available_step_definition(regexp_source, file_colon_line)
|
176
|
-
available_step_definition_hash[StepDefinitionLight.new(regexp_source, file_colon_line)] = nil
|
177
|
-
end
|
178
|
-
|
179
|
-
def invoked_step_definition(regexp_source, file_colon_line)
|
180
|
-
invoked_step_definition_hash[StepDefinitionLight.new(regexp_source, file_colon_line)] = nil
|
178
|
+
def hooks_for(type, scenario) # :nodoc:
|
179
|
+
hooks[type.to_sym].select { |hook| scenario.accept_hook?(hook) }
|
181
180
|
end
|
182
181
|
|
183
182
|
def create_expression(string_or_regexp)
|
@@ -187,14 +186,6 @@ module Cucumber
|
|
187
186
|
raise ArgumentError, 'Expression must be a String or Regexp'
|
188
187
|
end
|
189
188
|
|
190
|
-
def self.cli_snippet_type_options
|
191
|
-
registry = CucumberExpressions::ParameterTypeRegistry.new
|
192
|
-
cucumber_expression_generator = CucumberExpressions::CucumberExpressionGenerator.new(registry)
|
193
|
-
Snippet::SNIPPET_TYPES.keys.sort_by(&:to_s).map do |type|
|
194
|
-
Snippet::SNIPPET_TYPES[type].cli_option_string(type, cucumber_expression_generator)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
189
|
private
|
199
190
|
|
200
191
|
def parameter_type_envelope(parameter_type)
|
@@ -215,22 +206,9 @@ module Cucumber
|
|
215
206
|
)
|
216
207
|
end
|
217
208
|
|
218
|
-
def available_step_definition_hash
|
219
|
-
@available_step_definition_hash ||= {}
|
220
|
-
end
|
221
|
-
|
222
|
-
def invoked_step_definition_hash
|
223
|
-
@invoked_step_definition_hash ||= {}
|
224
|
-
end
|
225
|
-
|
226
209
|
def hooks
|
227
210
|
@hooks ||= Hash.new { |h, k| h[k] = [] }
|
228
211
|
end
|
229
212
|
end
|
230
|
-
|
231
|
-
def self.backtrace_line(proc, name)
|
232
|
-
location = Cucumber::Core::Test::Location.from_source_location(*proc.source_location)
|
233
|
-
"#{location}:in `#{name}'"
|
234
|
-
end
|
235
213
|
end
|
236
214
|
end
|
@@ -61,13 +61,11 @@ module Cucumber
|
|
61
61
|
end
|
62
62
|
|
63
63
|
def do_block
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
do_block << 'end'
|
70
|
-
do_block
|
64
|
+
<<~DOC.chomp
|
65
|
+
do#{parameters}
|
66
|
+
#{multiline_argument.comment}
|
67
|
+
end
|
68
|
+
DOC
|
71
69
|
end
|
72
70
|
|
73
71
|
def parameters
|
@@ -96,11 +94,10 @@ module Cucumber
|
|
96
94
|
"#{prefix}#{code_keyword}('#{expr.source}') do#{parameters(expr)}"
|
97
95
|
end.join("\n")
|
98
96
|
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
body << 'end'
|
97
|
+
body = <<~DOC.chomp
|
98
|
+
#{multiline_argument.comment}
|
99
|
+
end
|
100
|
+
DOC
|
104
101
|
|
105
102
|
"#{header}\n#{body}"
|
106
103
|
end
|
@@ -179,7 +176,9 @@ module Cucumber
|
|
179
176
|
array << 'doc_string'
|
180
177
|
end
|
181
178
|
|
182
|
-
def
|
179
|
+
def comment
|
180
|
+
'pending # Write code here that turns the phrase above into concrete actions'
|
181
|
+
end
|
183
182
|
end
|
184
183
|
|
185
184
|
class DataTable
|
@@ -191,15 +190,19 @@ module Cucumber
|
|
191
190
|
array << 'table'
|
192
191
|
end
|
193
192
|
|
194
|
-
def
|
195
|
-
|
193
|
+
def comment
|
194
|
+
<<~COMMENT.chomp
|
195
|
+
# table is a #{Cucumber::MultilineArgument::DataTable}
|
196
|
+
pending # Write code here that turns the phrase above into concrete actions
|
197
|
+
COMMENT
|
196
198
|
end
|
197
199
|
end
|
198
200
|
|
199
201
|
class None
|
200
202
|
def append_block_parameter_to(array); end
|
201
|
-
|
202
|
-
|
203
|
+
def comment
|
204
|
+
'pending # Write code here that turns the phrase above into concrete actions'
|
205
|
+
end
|
203
206
|
end
|
204
207
|
end
|
205
208
|
end
|
data/lib/cucumber/hooks.rb
CHANGED
@@ -10,17 +10,17 @@ module Cucumber
|
|
10
10
|
module Hooks
|
11
11
|
class << self
|
12
12
|
def before_hook(id, location, &block)
|
13
|
-
build_hook_step(id, location, block, BeforeHook, Core::Test::
|
13
|
+
build_hook_step(id, location, block, BeforeHook, Core::Test::Action::Unskippable)
|
14
14
|
end
|
15
15
|
|
16
16
|
def after_hook(id, location, &block)
|
17
|
-
build_hook_step(id, location, block, AfterHook, Core::Test::
|
17
|
+
build_hook_step(id, location, block, AfterHook, Core::Test::Action::Unskippable)
|
18
18
|
end
|
19
19
|
|
20
20
|
def after_step_hook(id, test_step, location, &block)
|
21
21
|
raise ArgumentError if test_step.hook?
|
22
22
|
|
23
|
-
build_hook_step(id, location, block, AfterStepHook, Core::Test::Action)
|
23
|
+
build_hook_step(id, location, block, AfterStepHook, Core::Test::Action::Defined)
|
24
24
|
end
|
25
25
|
|
26
26
|
def around_hook(&block)
|
@@ -4,6 +4,7 @@ require 'forwardable'
|
|
4
4
|
require 'cucumber/gherkin/data_table_parser'
|
5
5
|
require 'cucumber/gherkin/formatter/escaping'
|
6
6
|
require 'cucumber/multiline_argument/data_table/diff_matrices'
|
7
|
+
require 'cucumber/deprecate'
|
7
8
|
|
8
9
|
module Cucumber
|
9
10
|
module MultilineArgument
|
@@ -75,8 +76,8 @@ module Cucumber
|
|
75
76
|
def eof; end
|
76
77
|
end
|
77
78
|
|
78
|
-
# This is a Hash being initialized with a default value of a Hash
|
79
|
-
#
|
79
|
+
# This is a Hash being initialized with a default value of a Hash
|
80
|
+
# DO NOT REFORMAT TO REMOVE {} - Ruby 3.4+ will interpret these as keywords and cucumber will not work
|
80
81
|
NULL_CONVERSIONS = Hash.new({ strict: false, proc: ->(cell_value) { cell_value } }).freeze
|
81
82
|
|
82
83
|
# @param data [Core::Test::DataTable] the data for the table
|
@@ -367,6 +368,11 @@ module Cucumber
|
|
367
368
|
# TODO: remove the below function if it's not actually being used.
|
368
369
|
# Nothing else in this repo calls it.
|
369
370
|
def text?(text)
|
371
|
+
Cucumber.deprecate(
|
372
|
+
'This method is no longer supported for checking text',
|
373
|
+
'#text?',
|
374
|
+
'11.0.0'
|
375
|
+
)
|
370
376
|
raw.flatten.compact.detect { |cell_value| cell_value.index(text) }
|
371
377
|
end
|
372
378
|
|
data/lib/cucumber/runtime.rb
CHANGED
@@ -255,13 +255,13 @@ module Cucumber
|
|
255
255
|
filters << Filters::ApplyBeforeHooks.new(@support_code)
|
256
256
|
filters << Filters::ApplyAfterHooks.new(@support_code)
|
257
257
|
filters << Filters::ApplyAroundHooks.new(@support_code)
|
258
|
+
filters << Filters::BroadcastTestRunStartedEvent.new(@configuration)
|
259
|
+
filters << Filters::Quit.new
|
258
260
|
end
|
259
261
|
|
260
262
|
filters << Filters::BroadcastTestCaseReadyEvent.new(@configuration)
|
261
263
|
|
262
264
|
unless configuration.dry_run?
|
263
|
-
filters << Filters::BroadcastTestRunStartedEvent.new(@configuration)
|
264
|
-
filters << Filters::Quit.new
|
265
265
|
filters << Filters::Retry.new(@configuration)
|
266
266
|
# need to do this last so it becomes the first test step
|
267
267
|
filters << Filters::PrepareWorld.new(self)
|
@@ -11,6 +11,11 @@ module Cucumber
|
|
11
11
|
def initialize(regexp_source, location)
|
12
12
|
@regexp_source = regexp_source
|
13
13
|
@location = location
|
14
|
+
Cucumber.deprecate(
|
15
|
+
'StepDefinitionLight class is no longer a supported part of cucumber',
|
16
|
+
'#initialize',
|
17
|
+
'11.0.0'
|
18
|
+
)
|
14
19
|
end
|
15
20
|
|
16
21
|
def eql?(other)
|
data/lib/cucumber.rb
CHANGED
@@ -10,7 +10,8 @@ require 'cucumber/term/ansicolor'
|
|
10
10
|
|
11
11
|
module Cucumber
|
12
12
|
class << self
|
13
|
-
attr_accessor :wants_to_quit
|
13
|
+
attr_accessor :wants_to_quit
|
14
|
+
attr_reader :use_legacy_autoloader
|
14
15
|
|
15
16
|
def logger
|
16
17
|
return @log if @log
|
@@ -23,5 +24,14 @@ module Cucumber
|
|
23
24
|
def logger=(logger)
|
24
25
|
@log = logger
|
25
26
|
end
|
27
|
+
|
28
|
+
def use_legacy_autoloader=(value)
|
29
|
+
Cucumber.deprecate(
|
30
|
+
'This will be phased out of cucumber and should not be used. It is only there to support legacy systems',
|
31
|
+
'.use_legacy_autoloader',
|
32
|
+
'11.0.0'
|
33
|
+
)
|
34
|
+
@use_legacy_autoloader = value
|
35
|
+
end
|
26
36
|
end
|
27
37
|
end
|
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:
|
4
|
+
version: 10.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aslak Hellesøy
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2025-
|
13
|
+
date: 2025-06-12 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: base64
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.2'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0.2'
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: builder
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,54 +66,40 @@ dependencies:
|
|
52
66
|
requirements:
|
53
67
|
- - ">"
|
54
68
|
- !ruby/object:Gem::Version
|
55
|
-
version: '
|
69
|
+
version: '15'
|
56
70
|
- - "<"
|
57
71
|
- !ruby/object:Gem::Version
|
58
|
-
version: '
|
72
|
+
version: '17'
|
59
73
|
type: :runtime
|
60
74
|
prerelease: false
|
61
75
|
version_requirements: !ruby/object:Gem::Requirement
|
62
76
|
requirements:
|
63
77
|
- - ">"
|
64
78
|
- !ruby/object:Gem::Version
|
65
|
-
version: '
|
79
|
+
version: '15'
|
66
80
|
- - "<"
|
67
81
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
82
|
+
version: '17'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: cucumber-cucumber-expressions
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '17.0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '17.0'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: cucumber-gherkin
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - ">"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '17'
|
90
90
|
- - "<"
|
91
91
|
- !ruby/object:Gem::Version
|
92
|
-
version: '
|
92
|
+
version: '19'
|
93
93
|
type: :runtime
|
94
94
|
prerelease: false
|
95
95
|
version_requirements: !ruby/object:Gem::Requirement
|
96
96
|
requirements:
|
97
97
|
- - ">"
|
98
98
|
- !ruby/object:Gem::Version
|
99
|
-
version: '
|
99
|
+
version: '17'
|
100
100
|
- - "<"
|
101
101
|
- !ruby/object:Gem::Version
|
102
|
-
version: '
|
102
|
+
version: '19'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
104
|
name: cucumber-html-formatter
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,39 +121,33 @@ dependencies:
|
|
121
121
|
- !ruby/object:Gem::Version
|
122
122
|
version: '22'
|
123
123
|
- !ruby/object:Gem::Dependency
|
124
|
-
name:
|
124
|
+
name: diff-lcs
|
125
125
|
requirement: !ruby/object:Gem::Requirement
|
126
126
|
requirements:
|
127
|
-
- - "
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '19'
|
130
|
-
- - "<"
|
127
|
+
- - "~>"
|
131
128
|
- !ruby/object:Gem::Version
|
132
|
-
version: '
|
129
|
+
version: '1.5'
|
133
130
|
type: :runtime
|
134
131
|
prerelease: false
|
135
132
|
version_requirements: !ruby/object:Gem::Requirement
|
136
133
|
requirements:
|
137
|
-
- - "
|
138
|
-
- !ruby/object:Gem::Version
|
139
|
-
version: '19'
|
140
|
-
- - "<"
|
134
|
+
- - "~>"
|
141
135
|
- !ruby/object:Gem::Version
|
142
|
-
version: '
|
136
|
+
version: '1.5'
|
143
137
|
- !ruby/object:Gem::Dependency
|
144
|
-
name:
|
138
|
+
name: logger
|
145
139
|
requirement: !ruby/object:Gem::Requirement
|
146
140
|
requirements:
|
147
141
|
- - "~>"
|
148
142
|
- !ruby/object:Gem::Version
|
149
|
-
version: '1.
|
143
|
+
version: '1.6'
|
150
144
|
type: :runtime
|
151
145
|
prerelease: false
|
152
146
|
version_requirements: !ruby/object:Gem::Requirement
|
153
147
|
requirements:
|
154
148
|
- - "~>"
|
155
149
|
- !ruby/object:Gem::Version
|
156
|
-
version: '1.
|
150
|
+
version: '1.6'
|
157
151
|
- !ruby/object:Gem::Dependency
|
158
152
|
name: mini_mime
|
159
153
|
requirement: !ruby/object:Gem::Requirement
|
@@ -188,98 +182,84 @@ dependencies:
|
|
188
182
|
requirements:
|
189
183
|
- - "~>"
|
190
184
|
- !ruby/object:Gem::Version
|
191
|
-
version: '1.
|
185
|
+
version: '1.3'
|
192
186
|
type: :runtime
|
193
187
|
prerelease: false
|
194
188
|
version_requirements: !ruby/object:Gem::Requirement
|
195
189
|
requirements:
|
196
190
|
- - "~>"
|
197
191
|
- !ruby/object:Gem::Version
|
198
|
-
version: '1.
|
192
|
+
version: '1.3'
|
199
193
|
- !ruby/object:Gem::Dependency
|
200
194
|
name: cucumber-compatibility-kit
|
201
195
|
requirement: !ruby/object:Gem::Requirement
|
202
196
|
requirements:
|
203
197
|
- - "~>"
|
204
198
|
- !ruby/object:Gem::Version
|
205
|
-
version: '
|
199
|
+
version: '18.0'
|
206
200
|
type: :development
|
207
201
|
prerelease: false
|
208
202
|
version_requirements: !ruby/object:Gem::Requirement
|
209
203
|
requirements:
|
210
204
|
- - "~>"
|
211
205
|
- !ruby/object:Gem::Version
|
212
|
-
version: '
|
206
|
+
version: '18.0'
|
213
207
|
- !ruby/object:Gem::Dependency
|
214
208
|
name: nokogiri
|
215
209
|
requirement: !ruby/object:Gem::Requirement
|
216
210
|
requirements:
|
217
211
|
- - "~>"
|
218
212
|
- !ruby/object:Gem::Version
|
219
|
-
version: '1.
|
213
|
+
version: '1.15'
|
220
214
|
type: :development
|
221
215
|
prerelease: false
|
222
216
|
version_requirements: !ruby/object:Gem::Requirement
|
223
217
|
requirements:
|
224
218
|
- - "~>"
|
225
219
|
- !ruby/object:Gem::Version
|
226
|
-
version: '1.
|
220
|
+
version: '1.15'
|
227
221
|
- !ruby/object:Gem::Dependency
|
228
222
|
name: rake
|
229
223
|
requirement: !ruby/object:Gem::Requirement
|
230
224
|
requirements:
|
231
225
|
- - "~>"
|
232
226
|
- !ruby/object:Gem::Version
|
233
|
-
version: '13.
|
227
|
+
version: '13.2'
|
234
228
|
type: :development
|
235
229
|
prerelease: false
|
236
230
|
version_requirements: !ruby/object:Gem::Requirement
|
237
231
|
requirements:
|
238
232
|
- - "~>"
|
239
233
|
- !ruby/object:Gem::Version
|
240
|
-
version: '13.
|
234
|
+
version: '13.2'
|
241
235
|
- !ruby/object:Gem::Dependency
|
242
236
|
name: rspec
|
243
237
|
requirement: !ruby/object:Gem::Requirement
|
244
238
|
requirements:
|
245
239
|
- - "~>"
|
246
240
|
- !ruby/object:Gem::Version
|
247
|
-
version: '3.
|
241
|
+
version: '3.13'
|
248
242
|
type: :development
|
249
243
|
prerelease: false
|
250
244
|
version_requirements: !ruby/object:Gem::Requirement
|
251
245
|
requirements:
|
252
246
|
- - "~>"
|
253
247
|
- !ruby/object:Gem::Version
|
254
|
-
version: '3.
|
248
|
+
version: '3.13'
|
255
249
|
- !ruby/object:Gem::Dependency
|
256
250
|
name: rubocop
|
257
251
|
requirement: !ruby/object:Gem::Requirement
|
258
252
|
requirements:
|
259
253
|
- - "~>"
|
260
254
|
- !ruby/object:Gem::Version
|
261
|
-
version: 1.
|
262
|
-
type: :development
|
263
|
-
prerelease: false
|
264
|
-
version_requirements: !ruby/object:Gem::Requirement
|
265
|
-
requirements:
|
266
|
-
- - "~>"
|
267
|
-
- !ruby/object:Gem::Version
|
268
|
-
version: 1.56.4
|
269
|
-
- !ruby/object:Gem::Dependency
|
270
|
-
name: rubocop-capybara
|
271
|
-
requirement: !ruby/object:Gem::Requirement
|
272
|
-
requirements:
|
273
|
-
- - "~>"
|
274
|
-
- !ruby/object:Gem::Version
|
275
|
-
version: 2.19.0
|
255
|
+
version: 1.71.0
|
276
256
|
type: :development
|
277
257
|
prerelease: false
|
278
258
|
version_requirements: !ruby/object:Gem::Requirement
|
279
259
|
requirements:
|
280
260
|
- - "~>"
|
281
261
|
- !ruby/object:Gem::Version
|
282
|
-
version:
|
262
|
+
version: 1.71.0
|
283
263
|
- !ruby/object:Gem::Dependency
|
284
264
|
name: rubocop-packaging
|
285
265
|
requirement: !ruby/object:Gem::Requirement
|
@@ -314,14 +294,14 @@ dependencies:
|
|
314
294
|
requirements:
|
315
295
|
- - "~>"
|
316
296
|
- !ruby/object:Gem::Version
|
317
|
-
version:
|
297
|
+
version: 3.4.0
|
318
298
|
type: :development
|
319
299
|
prerelease: false
|
320
300
|
version_requirements: !ruby/object:Gem::Requirement
|
321
301
|
requirements:
|
322
302
|
- - "~>"
|
323
303
|
- !ruby/object:Gem::Version
|
324
|
-
version:
|
304
|
+
version: 3.4.0
|
325
305
|
- !ruby/object:Gem::Dependency
|
326
306
|
name: simplecov
|
327
307
|
requirement: !ruby/object:Gem::Requirement
|
@@ -436,6 +416,7 @@ files:
|
|
436
416
|
- lib/cucumber/formatter/query/pickle_step_by_test_step.rb
|
437
417
|
- lib/cucumber/formatter/query/step_definitions_by_test_step.rb
|
438
418
|
- lib/cucumber/formatter/query/test_case_started_by_test_case.rb
|
419
|
+
- lib/cucumber/formatter/query/test_run_started.rb
|
439
420
|
- lib/cucumber/formatter/rerun.rb
|
440
421
|
- lib/cucumber/formatter/stepdefs.rb
|
441
422
|
- lib/cucumber/formatter/steps.rb
|
@@ -494,6 +475,7 @@ metadata:
|
|
494
475
|
documentation_uri: https://www.rubydoc.info/github/cucumber/cucumber-ruby/
|
495
476
|
mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
|
496
477
|
source_code_uri: https://github.com/cucumber/cucumber-ruby
|
478
|
+
funding_uri: https://opencollective.com/cucumber
|
497
479
|
post_install_message:
|
498
480
|
rdoc_options:
|
499
481
|
- "--charset=UTF-8"
|
@@ -503,15 +485,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
503
485
|
requirements:
|
504
486
|
- - ">="
|
505
487
|
- !ruby/object:Gem::Version
|
506
|
-
version: '
|
488
|
+
version: '3.1'
|
507
489
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
508
490
|
requirements:
|
509
491
|
- - ">="
|
510
492
|
- !ruby/object:Gem::Version
|
511
|
-
version: 3.
|
493
|
+
version: 3.2.8
|
512
494
|
requirements: []
|
513
495
|
rubygems_version: 3.4.20
|
514
496
|
signing_key:
|
515
497
|
specification_version: 4
|
516
|
-
summary: cucumber-
|
498
|
+
summary: cucumber-10.0.0
|
517
499
|
test_files: []
|