cucumber 4.1.0 → 5.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/CHANGELOG.md +43 -0
- data/CONTRIBUTING.md +10 -10
- data/lib/autotest/cucumber_mixin.rb +14 -16
- data/lib/cucumber/cli/options.rb +27 -1
- data/lib/cucumber/configuration.rb +15 -8
- data/lib/cucumber/formatter/http_io.rb +12 -7
- data/lib/cucumber/formatter/interceptor.rb +2 -1
- data/lib/cucumber/formatter/io.rb +44 -8
- data/lib/cucumber/formatter/publish_banner_printer.rb +75 -0
- data/lib/cucumber/formatter/url_reporter.rb +30 -0
- data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +1 -1
- data/lib/cucumber/rspec/doubles.rb +3 -5
- data/lib/cucumber/runtime.rb +7 -0
- data/lib/cucumber/term/banner.rb +56 -0
- data/lib/cucumber/version +1 -1
- metadata +137 -134
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3c9c9e718ba5a344adfb97aaebfb58f5c99bb6f8142bb74c115c9b7fe94d0f3
|
4
|
+
data.tar.gz: 3a70805fa19b0b83393e61853a6803eecc3b5cfd578a3f1e2201c258fa11b107
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 81ed3402348bf4882f9e8a3b43e3b926396813d844cb93c00e1bfecac15f3fb7672750e0162c01182bada9aed90aff96d1751d66fe3bcd7ff9a0bb0b10052c29
|
7
|
+
data.tar.gz: 8f13726940d23325f2f8278dd6c6ddabbbe4cec7fa3b61d7066c2c068b3c326af011bb6eca6b4a18c0cc9ffa00043bb535d2932185259f60baf51ebefbd19087
|
data/CHANGELOG.md
CHANGED
@@ -10,6 +10,49 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
|
|
10
10
|
|
11
11
|
----
|
12
12
|
|
13
|
+
## [In GIT](https://github.com/cucumber/cucumber-ruby/compare/v5.0.0...master)
|
14
|
+
|
15
|
+
### Added
|
16
|
+
|
17
|
+
### Changed
|
18
|
+
|
19
|
+
### Removed
|
20
|
+
|
21
|
+
### Deprecated
|
22
|
+
|
23
|
+
### Fixed
|
24
|
+
|
25
|
+
## [5.0.0](https://github.com/cucumber/cucumber-ruby/compare/v4.1.0...5.0.0)
|
26
|
+
|
27
|
+
### Added
|
28
|
+
|
29
|
+
* `--publish` automatically publishes reports to [reports.cucumber.io](https://reports.cucumber.io)
|
30
|
+
* `--publish-quiet` does not print information banner about [reports.cucumber.io](https://reports.cucumber.io)
|
31
|
+
|
32
|
+
### Changed
|
33
|
+
|
34
|
+
* `-q, --quiet` will also imply `--publish-quiet` in addition to `--no-snippets --no-source --no-duration`
|
35
|
+
|
36
|
+
### Removed
|
37
|
+
|
38
|
+
* Dropped support for Ruby [2.3](https://www.ruby-lang.org/en/news/2019/03/31/support-of-ruby-2-3-has-ended/)
|
39
|
+
and [2.4](https://www.ruby-lang.org/en/news/2020/04/05/support-of-ruby-2-4-has-ended/)
|
40
|
+
|
41
|
+
### Fixed
|
42
|
+
|
43
|
+
* Update code to be compatible with `diff-lcs` versions 1.3 and 1.4
|
44
|
+
* Defer registration of `at_exit` hook that flushes and closes formatter streams
|
45
|
+
([#1458](https://github.com/cucumber/cucumber-ruby/pull/1458))
|
46
|
+
* Updated gems (see git diff for details)
|
47
|
+
* `cucumber-expressions`
|
48
|
+
* `cucumber-gherkin`
|
49
|
+
* `cucumber-create-meta`
|
50
|
+
* `cucumber-messages`
|
51
|
+
* Fix issue with timestamp nanos [#1438](https://github.com/cucumber/cucumber-ruby/issues/1438)
|
52
|
+
* `cucumber-html-formatter`
|
53
|
+
* Add filtering capabilities [#1444](https://github.com/cucumber/cucumber-ruby/issues/1444)
|
54
|
+
* Fix Interceptor that was raising exception when calling `puts` on the wrapped stream ([#1445](https://github.com/cucumber/cucumber-ruby/issues/1445))
|
55
|
+
|
13
56
|
## [4.1.0](https://github.com/cucumber/cucumber-ruby/compare/v4.0.1...v4.1.0)
|
14
57
|
|
15
58
|
### Changed
|
data/CONTRIBUTING.md
CHANGED
@@ -59,13 +59,13 @@ help us to correct style violations reported here:
|
|
59
59
|
|
60
60
|
## Release Process
|
61
61
|
|
62
|
-
*
|
63
|
-
*
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
62
|
+
* Upgrade gems with `scripts/update-gemspec`
|
63
|
+
* Bump the version number in `lib/cucumber/version`
|
64
|
+
* Update `CHANGELOG.md` with the upcoming version number and create a new `In Git` section
|
65
|
+
* Remove empty sections from `CHANGELOG.md`
|
66
|
+
* Now release it:
|
67
|
+
|
68
|
+
```
|
69
|
+
git commit -am "Release X.Y.Z"
|
70
|
+
make release
|
71
|
+
```
|
@@ -24,23 +24,21 @@ module Autotest::CucumberMixin
|
|
24
24
|
add_sigint_handler
|
25
25
|
|
26
26
|
loop do # ^c handler
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
hook :all_good
|
34
|
-
end
|
35
|
-
wait_for_changes
|
36
|
-
# Once tests and features are green, reset features every
|
37
|
-
# time a file is changed to see if anything breaks.
|
38
|
-
reset_features
|
39
|
-
rescue Interrupt
|
40
|
-
break if wants_to_quit
|
41
|
-
reset
|
42
|
-
reset_features
|
27
|
+
get_to_green
|
28
|
+
if tainted
|
29
|
+
rerun_all_tests
|
30
|
+
rerun_all_features if all_good
|
31
|
+
else
|
32
|
+
hook :all_good
|
43
33
|
end
|
34
|
+
wait_for_changes
|
35
|
+
# Once tests and features are green, reset features every
|
36
|
+
# time a file is changed to see if anything breaks.
|
37
|
+
reset_features
|
38
|
+
rescue Interrupt
|
39
|
+
break if wants_to_quit
|
40
|
+
reset
|
41
|
+
reset_features
|
44
42
|
end
|
45
43
|
hook :quit
|
46
44
|
end
|
data/lib/cucumber/cli/options.rb
CHANGED
@@ -9,6 +9,7 @@ require 'cucumber/core/test/result'
|
|
9
9
|
module Cucumber
|
10
10
|
module Cli
|
11
11
|
class Options
|
12
|
+
CUCUMBER_PUBLISH_URL = ENV['CUCUMBER_PUBLISH_URL'] || 'https://messages.cucumber.io/api/reports'
|
12
13
|
INDENT = ' ' * 53
|
13
14
|
BUILTIN_FORMATS = {
|
14
15
|
'pretty' => ['Cucumber::Formatter::Pretty', 'Prints the feature as is - in colours.'],
|
@@ -93,6 +94,10 @@ module Cucumber
|
|
93
94
|
|
94
95
|
@args.options do |opts| # rubocop:disable Metrics/BlockLength
|
95
96
|
opts.banner = banner
|
97
|
+
opts.on('--publish', 'Publish a report to https://reports.cucumber.io') do
|
98
|
+
set_option :publish_enabled, true
|
99
|
+
end
|
100
|
+
opts.on('--publish-quiet', 'Don\'t print information banner about publishing reports') { set_option :publish_quiet }
|
96
101
|
opts.on('-r LIBRARY|DIR', '--require LIBRARY|DIR', *require_files_msg) { |lib| require_files(lib) }
|
97
102
|
|
98
103
|
opts.on('-j DIR', '--jars DIR', 'Load all the jars under DIR') { |jars| load_jars(jars) } if Cucumber::JRUBY
|
@@ -117,7 +122,7 @@ module Cucumber
|
|
117
122
|
opts.on('-s', '--no-source', "Don't print the file and line of the step definition with the steps.") { set_option :source, false }
|
118
123
|
opts.on('-i', '--no-snippets', "Don't print snippets for pending steps.") { set_option :snippets, false }
|
119
124
|
opts.on('-I', '--snippet-type TYPE', *snippet_type_msg) { |v| set_option :snippet_type, v.to_sym }
|
120
|
-
opts.on('-q', '--quiet', 'Alias for --no-snippets --no-source.') { shut_up }
|
125
|
+
opts.on('-q', '--quiet', 'Alias for --no-snippets --no-source --no-duration --publish-quiet.') { shut_up }
|
121
126
|
opts.on('--no-duration', "Don't print the duration at the end of the summary") { set_option :duration, false }
|
122
127
|
opts.on('-b', '--backtrace', 'Show full backtrace for all errors.') { Cucumber.use_full_backtrace = true }
|
123
128
|
opts.on('-S', '--[no-]strict', *strict_msg) { |setting| set_strict(setting) }
|
@@ -145,6 +150,8 @@ Specify SEED to reproduce the shuffling from a previous run.
|
|
145
150
|
opts.on_tail('-h', '--help', "You're looking at it.") { exit_ok(opts.help) }
|
146
151
|
end.parse!
|
147
152
|
|
153
|
+
process_publish_options
|
154
|
+
|
148
155
|
@args.map! { |a| "#{a}:#{@options[:lines]}" } if @options[:lines]
|
149
156
|
|
150
157
|
extract_environment_variables
|
@@ -182,6 +189,18 @@ Specify SEED to reproduce the shuffling from a previous run.
|
|
182
189
|
|
183
190
|
private
|
184
191
|
|
192
|
+
def process_publish_options
|
193
|
+
@options[:publish_enabled] = true if truthy_string?(ENV['CUCUMBER_PUBLISH_ENABLED']) || ENV['CUCUMBER_PUBLISH_TOKEN']
|
194
|
+
@options[:formats] << publisher if @options[:publish_enabled]
|
195
|
+
|
196
|
+
@options[:publish_quiet] = true if truthy_string?(ENV['CUCUMBER_PUBLISH_QUIET'])
|
197
|
+
end
|
198
|
+
|
199
|
+
def truthy_string?(str)
|
200
|
+
return false if str.nil?
|
201
|
+
str !~ /^(false|no|0)$/i
|
202
|
+
end
|
203
|
+
|
185
204
|
def color_msg
|
186
205
|
[
|
187
206
|
'Whether or not to use ANSI color in the output. Cucumber decides',
|
@@ -351,6 +370,12 @@ Specify SEED to reproduce the shuffling from a previous run.
|
|
351
370
|
Dir["#{jars}/**/*.jar"].each { |jar| require jar }
|
352
371
|
end
|
353
372
|
|
373
|
+
def publisher
|
374
|
+
url = CUCUMBER_PUBLISH_URL
|
375
|
+
url += %( -H "Authorization: Bearer #{ENV['CUCUMBER_PUBLISH_TOKEN']}") if ENV['CUCUMBER_PUBLISH_TOKEN']
|
376
|
+
['message', {}, url]
|
377
|
+
end
|
378
|
+
|
354
379
|
def language(lang)
|
355
380
|
require 'gherkin/dialect'
|
356
381
|
|
@@ -415,6 +440,7 @@ Specify SEED to reproduce the shuffling from a previous run.
|
|
415
440
|
end
|
416
441
|
|
417
442
|
def shut_up
|
443
|
+
@options[:publish_quiet] = true
|
418
444
|
@options[:snippets] = false
|
419
445
|
@options[:source] = false
|
420
446
|
@options[:duration] = false
|
@@ -62,6 +62,14 @@ module Cucumber
|
|
62
62
|
@options[:dry_run]
|
63
63
|
end
|
64
64
|
|
65
|
+
def publish_enabled?
|
66
|
+
@options[:publish_enabled]
|
67
|
+
end
|
68
|
+
|
69
|
+
def publish_quiet?
|
70
|
+
@options[:publish_quiet]
|
71
|
+
end
|
72
|
+
|
65
73
|
def fail_fast?
|
66
74
|
@options[:fail_fast]
|
67
75
|
end
|
@@ -197,14 +205,12 @@ module Cucumber
|
|
197
205
|
|
198
206
|
def formatter_factories
|
199
207
|
formats.map do |format, formatter_options, path_or_io|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
raise e, "#{e.message}\nError creating formatter: #{format}", e.backtrace
|
207
|
-
end
|
208
|
+
factory = formatter_class(format)
|
209
|
+
yield factory,
|
210
|
+
formatter_options,
|
211
|
+
path_or_io
|
212
|
+
rescue Exception => e # rubocop:disable Lint/RescueException
|
213
|
+
raise e, "#{e.message}\nError creating formatter: #{format}", e.backtrace
|
208
214
|
end
|
209
215
|
end
|
210
216
|
|
@@ -256,6 +262,7 @@ module Cucumber
|
|
256
262
|
strict: Cucumber::Core::Test::Result::StrictConfiguration.new,
|
257
263
|
require: [],
|
258
264
|
dry_run: false,
|
265
|
+
publish_quiet: false,
|
259
266
|
fail_fast: false,
|
260
267
|
formats: [],
|
261
268
|
excludes: [],
|
@@ -6,10 +6,12 @@ module Cucumber
|
|
6
6
|
class HTTPIO
|
7
7
|
class << self
|
8
8
|
# Returns an IO that will write to a HTTP request's body
|
9
|
-
|
9
|
+
# https_verify_mode can be set to OpenSSL::SSL::VERIFY_NONE
|
10
|
+
# to ignore unsigned certificate - setting to nil will verify the certificate
|
11
|
+
def open(url, https_verify_mode = nil, reporter = nil)
|
10
12
|
@https_verify_mode = https_verify_mode
|
11
13
|
uri, method, headers = CurlOptionParser.parse(url)
|
12
|
-
IOHTTPBuffer.new(uri, method, headers, https_verify_mode)
|
14
|
+
IOHTTPBuffer.new(uri, method, headers, https_verify_mode, reporter)
|
13
15
|
end
|
14
16
|
end
|
15
17
|
end
|
@@ -64,16 +66,19 @@ module Cucumber
|
|
64
66
|
class IOHTTPBuffer
|
65
67
|
attr_reader :uri, :method, :headers
|
66
68
|
|
67
|
-
def initialize(uri, method, headers = {}, https_verify_mode = nil)
|
69
|
+
def initialize(uri, method, headers = {}, https_verify_mode = nil, reporter = nil)
|
68
70
|
@uri = URI(uri)
|
69
71
|
@method = method
|
70
72
|
@headers = headers
|
71
73
|
@write_io = Tempfile.new('cucumber', encoding: 'UTF-8')
|
72
74
|
@https_verify_mode = https_verify_mode
|
75
|
+
@reporter = reporter || NoReporter.new
|
73
76
|
end
|
74
77
|
|
75
78
|
def close
|
76
|
-
|
79
|
+
resource_uri = send_content(@uri, @method, @headers)
|
80
|
+
|
81
|
+
@reporter.report(resource_uri)
|
77
82
|
@write_io.close
|
78
83
|
end
|
79
84
|
|
@@ -91,7 +96,7 @@ module Cucumber
|
|
91
96
|
|
92
97
|
private
|
93
98
|
|
94
|
-
def
|
99
|
+
def send_content(uri, method, headers, attempt = 10)
|
95
100
|
content = @write_io
|
96
101
|
http = build_client(uri, @https_verify_mode)
|
97
102
|
|
@@ -116,9 +121,9 @@ module Cucumber
|
|
116
121
|
|
117
122
|
case response
|
118
123
|
when Net::HTTPSuccess
|
119
|
-
|
124
|
+
uri
|
120
125
|
when Net::HTTPRedirection
|
121
|
-
|
126
|
+
send_content(URI(response['Location']), method, headers, attempt - 1)
|
122
127
|
else
|
123
128
|
raise StandardError, "request to #{uri} failed with status #{response.code}"
|
124
129
|
end
|
@@ -5,6 +5,7 @@ module Cucumber
|
|
5
5
|
module Interceptor
|
6
6
|
class Pipe
|
7
7
|
attr_reader :pipe
|
8
|
+
|
8
9
|
def initialize(pipe)
|
9
10
|
@pipe = pipe
|
10
11
|
@buffer = StringIO.new
|
@@ -31,7 +32,7 @@ module Cucumber
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def method_missing(method, *args, &blk)
|
34
|
-
@pipe.send(method, *args, &blk)
|
35
|
+
@pipe.respond_to?(method) ? @pipe.send(method, *args, &blk) : super
|
35
36
|
end
|
36
37
|
|
37
38
|
def respond_to_missing?(method, include_private = false)
|
@@ -1,6 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'cucumber/formatter/http_io'
|
4
|
+
require 'cucumber/formatter/url_reporter'
|
5
|
+
require 'cucumber/cli/options'
|
4
6
|
|
5
7
|
module Cucumber
|
6
8
|
module Formatter
|
@@ -9,19 +11,53 @@ module Cucumber
|
|
9
11
|
|
10
12
|
def ensure_io(path_or_url_or_io)
|
11
13
|
return nil if path_or_url_or_io.nil?
|
12
|
-
return path_or_url_or_io if
|
13
|
-
|
14
|
-
|
14
|
+
return path_or_url_or_io if io?(path_or_url_or_io)
|
15
|
+
|
16
|
+
io = if url?(path_or_url_or_io)
|
17
|
+
url = path_or_url_or_io
|
18
|
+
reporter = url.start_with?(Cucumber::Cli::Options::CUCUMBER_PUBLISH_URL) ? URLReporter.new($stdout) : NoReporter.new
|
19
|
+
HTTPIO.open(url, nil, reporter)
|
15
20
|
else
|
16
21
|
File.open(path_or_url_or_io, Cucumber.file_mode('w'))
|
17
22
|
end
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
23
|
+
@io_objects_to_close ||= []
|
24
|
+
@io_objects_to_close.push(io)
|
25
|
+
io
|
26
|
+
end
|
27
|
+
|
28
|
+
module ClassMethods
|
29
|
+
def new(*args, &block)
|
30
|
+
instance = super
|
31
|
+
|
32
|
+
config = args[0]
|
33
|
+
if config.respond_to? :on_event
|
34
|
+
config.on_event :test_run_finished do
|
35
|
+
ios = instance.instance_variable_get(:@io_objects_to_close) || []
|
36
|
+
ios.each do |io|
|
37
|
+
at_exit do
|
38
|
+
unless io.closed?
|
39
|
+
io.flush
|
40
|
+
io.close
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
22
45
|
end
|
46
|
+
|
47
|
+
instance
|
23
48
|
end
|
24
|
-
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.included(formatter_class)
|
52
|
+
formatter_class.extend(ClassMethods)
|
53
|
+
end
|
54
|
+
|
55
|
+
def io?(path_or_url_or_io)
|
56
|
+
path_or_url_or_io.respond_to?(:write)
|
57
|
+
end
|
58
|
+
|
59
|
+
def url?(path_or_url_or_io)
|
60
|
+
path_or_url_or_io.match(%r{^https?://})
|
25
61
|
end
|
26
62
|
|
27
63
|
def ensure_file(path, name)
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cucumber/term/banner'
|
4
|
+
|
5
|
+
module Cucumber
|
6
|
+
module Formatter
|
7
|
+
class PublishBannerPrinter
|
8
|
+
include Term::Banner
|
9
|
+
|
10
|
+
def initialize(configuration)
|
11
|
+
return if configuration.publish_enabled?
|
12
|
+
|
13
|
+
configuration.on_event :test_run_finished do |_event|
|
14
|
+
display_publish_ad(configuration.error_stream)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# rubocop:disable Metrics/MethodLength
|
19
|
+
def display_publish_ad(io)
|
20
|
+
display_banner(
|
21
|
+
[
|
22
|
+
[
|
23
|
+
'Share your Cucumber Report with your team at ',
|
24
|
+
link('https://reports.cucumber.io')
|
25
|
+
],
|
26
|
+
'',
|
27
|
+
[
|
28
|
+
'Command line option: ',
|
29
|
+
highlight('--publish')
|
30
|
+
],
|
31
|
+
[
|
32
|
+
'Environment variable: ',
|
33
|
+
highlight('CUCUMBER_PUBLISH_ENABLED=true')
|
34
|
+
],
|
35
|
+
[
|
36
|
+
'cucumber.yml: ',
|
37
|
+
highlight('default: --publish')
|
38
|
+
],
|
39
|
+
'',
|
40
|
+
[
|
41
|
+
'More information at ',
|
42
|
+
link('https://reports.cucumber.io/docs/cucumber-ruby')
|
43
|
+
],
|
44
|
+
'',
|
45
|
+
[
|
46
|
+
'To disable this message, specify ',
|
47
|
+
pre('CUCUMBER_PUBLISH_QUIET=true'),
|
48
|
+
' or use the '
|
49
|
+
],
|
50
|
+
[
|
51
|
+
pre('--publish-quiet'),
|
52
|
+
' option. You can also add this to your ',
|
53
|
+
pre('cucumber.yml:')
|
54
|
+
],
|
55
|
+
[pre('default: --publish-quiet')]
|
56
|
+
],
|
57
|
+
io
|
58
|
+
)
|
59
|
+
end
|
60
|
+
# rubocop:enable Metrics/MethodLength
|
61
|
+
|
62
|
+
def highlight(text)
|
63
|
+
[text, :cyan]
|
64
|
+
end
|
65
|
+
|
66
|
+
def link(text)
|
67
|
+
[text, :cyan, :bold, :underline]
|
68
|
+
end
|
69
|
+
|
70
|
+
def pre(text)
|
71
|
+
[text, :bold]
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'cucumber/term/banner'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Formatter
|
5
|
+
class URLReporter
|
6
|
+
include Term::Banner
|
7
|
+
|
8
|
+
def initialize(io)
|
9
|
+
@io = io
|
10
|
+
end
|
11
|
+
|
12
|
+
def report(url)
|
13
|
+
uri = URI(url)
|
14
|
+
display_banner(
|
15
|
+
[
|
16
|
+
'View your Cucumber Report at:',
|
17
|
+
[["https://reports.cucumber.io#{uri.path}", :cyan, :bold, :underline]],
|
18
|
+
'',
|
19
|
+
[['This report will self-destruct in 24h unless it is claimed or deleted.', :green, :bold]]
|
20
|
+
],
|
21
|
+
@io
|
22
|
+
)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class NoReporter
|
27
|
+
def report(url); end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -95,7 +95,7 @@ module Cucumber
|
|
95
95
|
def changes
|
96
96
|
require 'diff/lcs'
|
97
97
|
diffable_cell_matrix = cell_matrix.dup.extend(::Diff::LCS)
|
98
|
-
diffable_cell_matrix.diff(other_table_cell_matrix).flatten
|
98
|
+
diffable_cell_matrix.diff(other_table_cell_matrix).flatten(1)
|
99
99
|
end
|
100
100
|
|
101
101
|
def inspect_rows(missing_row, inserted_row)
|
data/lib/cucumber/runtime.rb
CHANGED
@@ -166,11 +166,14 @@ module Cucumber
|
|
166
166
|
|
167
167
|
require 'cucumber/formatter/ignore_missing_messages'
|
168
168
|
require 'cucumber/formatter/fail_fast'
|
169
|
+
require 'cucumber/formatter/publish_banner_printer'
|
169
170
|
require 'cucumber/core/report/summary'
|
171
|
+
|
170
172
|
def report
|
171
173
|
return @report if @report
|
172
174
|
reports = [summary_report] + formatters
|
173
175
|
reports << fail_fast_report if @configuration.fail_fast?
|
176
|
+
reports << publish_banner_printer unless @configuration.publish_quiet?
|
174
177
|
@report ||= Formatter::Fanout.new(reports)
|
175
178
|
end
|
176
179
|
|
@@ -182,6 +185,10 @@ module Cucumber
|
|
182
185
|
@fail_fast_report ||= Formatter::FailFast.new(@configuration)
|
183
186
|
end
|
184
187
|
|
188
|
+
def publish_banner_printer
|
189
|
+
@publish_banner_printer ||= Formatter::PublishBannerPrinter.new(@configuration)
|
190
|
+
end
|
191
|
+
|
185
192
|
def formatters
|
186
193
|
@formatters ||=
|
187
194
|
@configuration.formatter_factories do |factory, formatter_options, path_or_io|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'cucumber/term/ansicolor'
|
2
|
+
|
3
|
+
module Cucumber
|
4
|
+
module Term
|
5
|
+
module Banner
|
6
|
+
def display_banner(lines, io, border_modifiers = nil)
|
7
|
+
BannerMaker.new.display_banner(lines, io, border_modifiers || [:cyan])
|
8
|
+
end
|
9
|
+
|
10
|
+
class BannerMaker
|
11
|
+
include Term::ANSIColor
|
12
|
+
|
13
|
+
def display_banner(lines, io, border_modifiers)
|
14
|
+
lines = lines.split("\n") if lines.is_a? String
|
15
|
+
longest_line_length = lines.map { |line| line_length(line) }.max
|
16
|
+
|
17
|
+
io.puts apply_modifiers("┌#{'─' * (longest_line_length + 2)}┐", border_modifiers)
|
18
|
+
lines.map do |line|
|
19
|
+
padding = ' ' * (longest_line_length - line_length(line))
|
20
|
+
io.puts "#{apply_modifiers('│', border_modifiers)} #{display_line(line)}#{padding} #{apply_modifiers('│', border_modifiers)}"
|
21
|
+
end
|
22
|
+
io.puts apply_modifiers("└#{'─' * (longest_line_length + 2)}┘", border_modifiers)
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def display_line(line)
|
28
|
+
line.is_a?(Array) ? line.map { |span| display_span(span) }.join : line
|
29
|
+
end
|
30
|
+
|
31
|
+
def display_span(span)
|
32
|
+
return apply_modifiers(span.shift, span) if span.is_a?(Array)
|
33
|
+
span
|
34
|
+
end
|
35
|
+
|
36
|
+
def apply_modifiers(str, modifiers)
|
37
|
+
display = str
|
38
|
+
modifiers.each { |modifier| display = send(modifier, display) }
|
39
|
+
display
|
40
|
+
end
|
41
|
+
|
42
|
+
def line_length(line)
|
43
|
+
if line.is_a?(Array)
|
44
|
+
line.map { |span| span_length(span) }.sum
|
45
|
+
else
|
46
|
+
line.length
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def span_length(span)
|
51
|
+
span.is_a?(Array) ? span[0].length : span.length
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/cucumber/version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
5.0.0
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cucumber
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aslak Hellesøy
|
8
8
|
- Matt Wynne
|
9
9
|
- Steve Tooke
|
10
|
-
autorequire:
|
10
|
+
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2020-
|
13
|
+
date: 2020-08-19 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: builder
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '3.2'
|
22
22
|
- - ">="
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 3.2.
|
24
|
+
version: 3.2.4
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -31,173 +31,167 @@ dependencies:
|
|
31
31
|
version: '3.2'
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 3.2.
|
34
|
+
version: 3.2.4
|
35
35
|
- !ruby/object:Gem::Dependency
|
36
36
|
name: cucumber-core
|
37
37
|
requirement: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
|
-
- - ">="
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 7.1.0
|
42
39
|
- - "~>"
|
43
40
|
- !ruby/object:Gem::Version
|
44
|
-
version: '
|
41
|
+
version: '8.0'
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: 8.0.1
|
45
45
|
type: :runtime
|
46
46
|
prerelease: false
|
47
47
|
version_requirements: !ruby/object:Gem::Requirement
|
48
48
|
requirements:
|
49
|
-
- - ">="
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: 7.1.0
|
52
49
|
- - "~>"
|
53
50
|
- !ruby/object:Gem::Version
|
54
|
-
version: '
|
51
|
+
version: '8.0'
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 8.0.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: cucumber-create-meta
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ">="
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 1.0.0
|
62
59
|
- - "~>"
|
63
60
|
- !ruby/object:Gem::Version
|
64
|
-
version:
|
61
|
+
version: '2.0'
|
62
|
+
- - ">="
|
63
|
+
- !ruby/object:Gem::Version
|
64
|
+
version: 2.0.1
|
65
65
|
type: :runtime
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- - ">="
|
70
|
-
- !ruby/object:Gem::Version
|
71
|
-
version: 1.0.0
|
72
69
|
- - "~>"
|
73
70
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
71
|
+
version: '2.0'
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: 2.0.1
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: cucumber-cucumber-expressions
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
|
-
- - ">="
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: 10.1.0
|
82
79
|
- - "~>"
|
83
80
|
- !ruby/object:Gem::Version
|
84
|
-
version: '10.
|
81
|
+
version: '10.3'
|
82
|
+
- - ">="
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 10.3.0
|
85
85
|
type: :runtime
|
86
86
|
prerelease: false
|
87
87
|
version_requirements: !ruby/object:Gem::Requirement
|
88
88
|
requirements:
|
89
|
-
- - ">="
|
90
|
-
- !ruby/object:Gem::Version
|
91
|
-
version: 10.1.0
|
92
89
|
- - "~>"
|
93
90
|
- !ruby/object:Gem::Version
|
94
|
-
version: '10.
|
91
|
+
version: '10.3'
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
version: 10.3.0
|
95
95
|
- !ruby/object:Gem::Dependency
|
96
96
|
name: cucumber-gherkin
|
97
97
|
requirement: !ruby/object:Gem::Requirement
|
98
98
|
requirements:
|
99
99
|
- - "~>"
|
100
100
|
- !ruby/object:Gem::Version
|
101
|
-
version: '
|
101
|
+
version: '15.0'
|
102
102
|
- - ">="
|
103
103
|
- !ruby/object:Gem::Version
|
104
|
-
version:
|
104
|
+
version: 15.0.2
|
105
105
|
type: :runtime
|
106
106
|
prerelease: false
|
107
107
|
version_requirements: !ruby/object:Gem::Requirement
|
108
108
|
requirements:
|
109
109
|
- - "~>"
|
110
110
|
- !ruby/object:Gem::Version
|
111
|
-
version: '
|
111
|
+
version: '15.0'
|
112
112
|
- - ">="
|
113
113
|
- !ruby/object:Gem::Version
|
114
|
-
version:
|
114
|
+
version: 15.0.2
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: cucumber-html-formatter
|
117
117
|
requirement: !ruby/object:Gem::Requirement
|
118
118
|
requirements:
|
119
|
-
- - ">="
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: 7.0.0
|
122
119
|
- - "~>"
|
123
120
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
121
|
+
version: '9.0'
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 9.0.0
|
125
125
|
type: :runtime
|
126
126
|
prerelease: false
|
127
127
|
version_requirements: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - ">="
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: 7.0.0
|
132
129
|
- - "~>"
|
133
130
|
- !ruby/object:Gem::Version
|
134
|
-
version: '
|
131
|
+
version: '9.0'
|
132
|
+
- - ">="
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 9.0.0
|
135
135
|
- !ruby/object:Gem::Dependency
|
136
136
|
name: cucumber-messages
|
137
137
|
requirement: !ruby/object:Gem::Requirement
|
138
138
|
requirements:
|
139
|
-
- - ">="
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: 12.2.0
|
142
139
|
- - "~>"
|
143
140
|
- !ruby/object:Gem::Version
|
144
|
-
version: '
|
141
|
+
version: '13.0'
|
142
|
+
- - ">="
|
143
|
+
- !ruby/object:Gem::Version
|
144
|
+
version: 13.0.1
|
145
145
|
type: :runtime
|
146
146
|
prerelease: false
|
147
147
|
version_requirements: !ruby/object:Gem::Requirement
|
148
148
|
requirements:
|
149
|
-
- - ">="
|
150
|
-
- !ruby/object:Gem::Version
|
151
|
-
version: 12.2.0
|
152
149
|
- - "~>"
|
153
150
|
- !ruby/object:Gem::Version
|
154
|
-
version: '
|
151
|
+
version: '13.0'
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
version: 13.0.1
|
155
155
|
- !ruby/object:Gem::Dependency
|
156
156
|
name: cucumber-wire
|
157
157
|
requirement: !ruby/object:Gem::Requirement
|
158
158
|
requirements:
|
159
|
-
- - ">="
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
version: 3.1.0
|
162
159
|
- - "~>"
|
163
160
|
- !ruby/object:Gem::Version
|
164
|
-
version: '
|
161
|
+
version: '4.0'
|
162
|
+
- - ">="
|
163
|
+
- !ruby/object:Gem::Version
|
164
|
+
version: 4.0.1
|
165
165
|
type: :runtime
|
166
166
|
prerelease: false
|
167
167
|
version_requirements: !ruby/object:Gem::Requirement
|
168
168
|
requirements:
|
169
|
-
- - ">="
|
170
|
-
- !ruby/object:Gem::Version
|
171
|
-
version: 3.1.0
|
172
169
|
- - "~>"
|
173
170
|
- !ruby/object:Gem::Version
|
174
|
-
version: '
|
171
|
+
version: '4.0'
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: 4.0.1
|
175
175
|
- !ruby/object:Gem::Dependency
|
176
176
|
name: diff-lcs
|
177
177
|
requirement: !ruby/object:Gem::Requirement
|
178
178
|
requirements:
|
179
|
-
- - ">="
|
180
|
-
- !ruby/object:Gem::Version
|
181
|
-
version: '1.3'
|
182
179
|
- - "~>"
|
183
|
-
- !ruby/object:Gem::Version
|
184
|
-
version: '1.3'
|
185
|
-
- - "<"
|
186
180
|
- !ruby/object:Gem::Version
|
187
181
|
version: '1.4'
|
182
|
+
- - ">="
|
183
|
+
- !ruby/object:Gem::Version
|
184
|
+
version: 1.4.4
|
188
185
|
type: :runtime
|
189
186
|
prerelease: false
|
190
187
|
version_requirements: !ruby/object:Gem::Requirement
|
191
188
|
requirements:
|
192
|
-
- - ">="
|
193
|
-
- !ruby/object:Gem::Version
|
194
|
-
version: '1.3'
|
195
189
|
- - "~>"
|
196
|
-
- !ruby/object:Gem::Version
|
197
|
-
version: '1.3'
|
198
|
-
- - "<"
|
199
190
|
- !ruby/object:Gem::Version
|
200
191
|
version: '1.4'
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 1.4.4
|
201
195
|
- !ruby/object:Gem::Dependency
|
202
196
|
name: multi_test
|
203
197
|
requirement: !ruby/object:Gem::Requirement
|
@@ -224,20 +218,20 @@ dependencies:
|
|
224
218
|
requirements:
|
225
219
|
- - "~>"
|
226
220
|
- !ruby/object:Gem::Version
|
227
|
-
version: '1.
|
221
|
+
version: '1.2'
|
228
222
|
- - ">="
|
229
223
|
- !ruby/object:Gem::Version
|
230
|
-
version: 1.
|
224
|
+
version: 1.2.1
|
231
225
|
type: :runtime
|
232
226
|
prerelease: false
|
233
227
|
version_requirements: !ruby/object:Gem::Requirement
|
234
228
|
requirements:
|
235
229
|
- - "~>"
|
236
230
|
- !ruby/object:Gem::Version
|
237
|
-
version: '1.
|
231
|
+
version: '1.2'
|
238
232
|
- - ">="
|
239
233
|
- !ruby/object:Gem::Version
|
240
|
-
version: 1.
|
234
|
+
version: 1.2.1
|
241
235
|
- !ruby/object:Gem::Dependency
|
242
236
|
name: nokogiri
|
243
237
|
requirement: !ruby/object:Gem::Requirement
|
@@ -247,7 +241,7 @@ dependencies:
|
|
247
241
|
version: '1.10'
|
248
242
|
- - ">="
|
249
243
|
- !ruby/object:Gem::Version
|
250
|
-
version: 1.10.
|
244
|
+
version: 1.10.10
|
251
245
|
type: :development
|
252
246
|
prerelease: false
|
253
247
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -257,87 +251,87 @@ dependencies:
|
|
257
251
|
version: '1.10'
|
258
252
|
- - ">="
|
259
253
|
- !ruby/object:Gem::Version
|
260
|
-
version: 1.10.
|
254
|
+
version: 1.10.10
|
261
255
|
- !ruby/object:Gem::Dependency
|
262
256
|
name: pry
|
263
257
|
requirement: !ruby/object:Gem::Requirement
|
264
258
|
requirements:
|
265
259
|
- - "~>"
|
266
260
|
- !ruby/object:Gem::Version
|
267
|
-
version: '0.
|
261
|
+
version: '0.13'
|
268
262
|
- - ">="
|
269
263
|
- !ruby/object:Gem::Version
|
270
|
-
version: 0.
|
264
|
+
version: 0.13.1
|
271
265
|
type: :development
|
272
266
|
prerelease: false
|
273
267
|
version_requirements: !ruby/object:Gem::Requirement
|
274
268
|
requirements:
|
275
269
|
- - "~>"
|
276
270
|
- !ruby/object:Gem::Version
|
277
|
-
version: '0.
|
271
|
+
version: '0.13'
|
278
272
|
- - ">="
|
279
273
|
- !ruby/object:Gem::Version
|
280
|
-
version: 0.
|
274
|
+
version: 0.13.1
|
281
275
|
- !ruby/object:Gem::Dependency
|
282
276
|
name: rake
|
283
277
|
requirement: !ruby/object:Gem::Requirement
|
284
278
|
requirements:
|
285
279
|
- - "~>"
|
286
280
|
- !ruby/object:Gem::Version
|
287
|
-
version: '
|
281
|
+
version: '13.0'
|
288
282
|
- - ">="
|
289
283
|
- !ruby/object:Gem::Version
|
290
|
-
version:
|
284
|
+
version: 13.0.1
|
291
285
|
type: :development
|
292
286
|
prerelease: false
|
293
287
|
version_requirements: !ruby/object:Gem::Requirement
|
294
288
|
requirements:
|
295
289
|
- - "~>"
|
296
290
|
- !ruby/object:Gem::Version
|
297
|
-
version: '
|
291
|
+
version: '13.0'
|
298
292
|
- - ">="
|
299
293
|
- !ruby/object:Gem::Version
|
300
|
-
version:
|
294
|
+
version: 13.0.1
|
301
295
|
- !ruby/object:Gem::Dependency
|
302
296
|
name: rspec
|
303
297
|
requirement: !ruby/object:Gem::Requirement
|
304
298
|
requirements:
|
305
|
-
- - ">="
|
306
|
-
- !ruby/object:Gem::Version
|
307
|
-
version: 3.8.0
|
308
299
|
- - "~>"
|
309
300
|
- !ruby/object:Gem::Version
|
310
|
-
version: '3.
|
301
|
+
version: '3.9'
|
302
|
+
- - ">="
|
303
|
+
- !ruby/object:Gem::Version
|
304
|
+
version: 3.9.0
|
311
305
|
type: :development
|
312
306
|
prerelease: false
|
313
307
|
version_requirements: !ruby/object:Gem::Requirement
|
314
308
|
requirements:
|
315
|
-
- - ">="
|
316
|
-
- !ruby/object:Gem::Version
|
317
|
-
version: 3.8.0
|
318
309
|
- - "~>"
|
319
310
|
- !ruby/object:Gem::Version
|
320
|
-
version: '3.
|
311
|
+
version: '3.9'
|
312
|
+
- - ">="
|
313
|
+
- !ruby/object:Gem::Version
|
314
|
+
version: 3.9.0
|
321
315
|
- !ruby/object:Gem::Dependency
|
322
316
|
name: simplecov
|
323
317
|
requirement: !ruby/object:Gem::Requirement
|
324
318
|
requirements:
|
325
|
-
- - ">="
|
326
|
-
- !ruby/object:Gem::Version
|
327
|
-
version: 0.17.0
|
328
319
|
- - "~>"
|
329
320
|
- !ruby/object:Gem::Version
|
330
|
-
version: '0.
|
321
|
+
version: '0.19'
|
322
|
+
- - ">="
|
323
|
+
- !ruby/object:Gem::Version
|
324
|
+
version: 0.19.0
|
331
325
|
type: :development
|
332
326
|
prerelease: false
|
333
327
|
version_requirements: !ruby/object:Gem::Requirement
|
334
328
|
requirements:
|
335
|
-
- - ">="
|
336
|
-
- !ruby/object:Gem::Version
|
337
|
-
version: 0.17.0
|
338
329
|
- - "~>"
|
339
330
|
- !ruby/object:Gem::Version
|
340
|
-
version: '0.
|
331
|
+
version: '0.19'
|
332
|
+
- - ">="
|
333
|
+
- !ruby/object:Gem::Version
|
334
|
+
version: 0.19.0
|
341
335
|
- !ruby/object:Gem::Dependency
|
342
336
|
name: syntax
|
343
337
|
requirement: !ruby/object:Gem::Requirement
|
@@ -364,80 +358,80 @@ dependencies:
|
|
364
358
|
requirements:
|
365
359
|
- - "~>"
|
366
360
|
- !ruby/object:Gem::Version
|
367
|
-
version: '
|
361
|
+
version: '3.3'
|
368
362
|
- - ">="
|
369
363
|
- !ruby/object:Gem::Version
|
370
|
-
version:
|
364
|
+
version: 3.3.6
|
371
365
|
type: :development
|
372
366
|
prerelease: false
|
373
367
|
version_requirements: !ruby/object:Gem::Requirement
|
374
368
|
requirements:
|
375
369
|
- - "~>"
|
376
370
|
- !ruby/object:Gem::Version
|
377
|
-
version: '
|
371
|
+
version: '3.3'
|
378
372
|
- - ">="
|
379
373
|
- !ruby/object:Gem::Version
|
380
|
-
version:
|
374
|
+
version: 3.3.6
|
381
375
|
- !ruby/object:Gem::Dependency
|
382
376
|
name: webrick
|
383
377
|
requirement: !ruby/object:Gem::Requirement
|
384
378
|
requirements:
|
385
|
-
- - ">="
|
386
|
-
- !ruby/object:Gem::Version
|
387
|
-
version: 1.6.0
|
388
379
|
- - "~>"
|
389
380
|
- !ruby/object:Gem::Version
|
390
381
|
version: '1.6'
|
382
|
+
- - ">="
|
383
|
+
- !ruby/object:Gem::Version
|
384
|
+
version: 1.6.0
|
391
385
|
type: :development
|
392
386
|
prerelease: false
|
393
387
|
version_requirements: !ruby/object:Gem::Requirement
|
394
388
|
requirements:
|
395
|
-
- - ">="
|
396
|
-
- !ruby/object:Gem::Version
|
397
|
-
version: 1.6.0
|
398
389
|
- - "~>"
|
399
390
|
- !ruby/object:Gem::Version
|
400
391
|
version: '1.6'
|
392
|
+
- - ">="
|
393
|
+
- !ruby/object:Gem::Version
|
394
|
+
version: 1.6.0
|
401
395
|
- !ruby/object:Gem::Dependency
|
402
396
|
name: octokit
|
403
397
|
requirement: !ruby/object:Gem::Requirement
|
404
398
|
requirements:
|
405
|
-
- - ">="
|
406
|
-
- !ruby/object:Gem::Version
|
407
|
-
version: 4.14.0
|
408
399
|
- - "~>"
|
409
400
|
- !ruby/object:Gem::Version
|
410
|
-
version: '4.
|
401
|
+
version: '4.18'
|
402
|
+
- - ">="
|
403
|
+
- !ruby/object:Gem::Version
|
404
|
+
version: 4.18.0
|
411
405
|
type: :development
|
412
406
|
prerelease: false
|
413
407
|
version_requirements: !ruby/object:Gem::Requirement
|
414
408
|
requirements:
|
415
|
-
- - ">="
|
416
|
-
- !ruby/object:Gem::Version
|
417
|
-
version: 4.14.0
|
418
409
|
- - "~>"
|
419
410
|
- !ruby/object:Gem::Version
|
420
|
-
version: '4.
|
411
|
+
version: '4.18'
|
412
|
+
- - ">="
|
413
|
+
- !ruby/object:Gem::Version
|
414
|
+
version: 4.18.0
|
421
415
|
- !ruby/object:Gem::Dependency
|
422
416
|
name: rack-test
|
423
417
|
requirement: !ruby/object:Gem::Requirement
|
424
418
|
requirements:
|
425
|
-
- - ">="
|
426
|
-
- !ruby/object:Gem::Version
|
427
|
-
version: 1.1.0
|
428
419
|
- - "~>"
|
429
420
|
- !ruby/object:Gem::Version
|
430
421
|
version: '1.1'
|
422
|
+
- - ">="
|
423
|
+
- !ruby/object:Gem::Version
|
424
|
+
version: 1.1.0
|
431
425
|
type: :development
|
432
426
|
prerelease: false
|
433
427
|
version_requirements: !ruby/object:Gem::Requirement
|
434
428
|
requirements:
|
435
|
-
- - ">="
|
436
|
-
- !ruby/object:Gem::Version
|
437
|
-
version: 1.1.0
|
438
429
|
- - "~>"
|
439
430
|
- !ruby/object:Gem::Version
|
440
431
|
version: '1.1'
|
432
|
+
- - ">="
|
433
|
+
- !ruby/object:Gem::Version
|
434
|
+
version: 1.1.0
|
441
435
|
- !ruby/object:Gem::Dependency
|
442
436
|
name: sinatra
|
443
437
|
requirement: !ruby/object:Gem::Requirement
|
@@ -447,7 +441,7 @@ dependencies:
|
|
447
441
|
version: '2.0'
|
448
442
|
- - ">="
|
449
443
|
- !ruby/object:Gem::Version
|
450
|
-
version: 2.0.
|
444
|
+
version: 2.0.8.1
|
451
445
|
type: :development
|
452
446
|
prerelease: false
|
453
447
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -457,21 +451,27 @@ dependencies:
|
|
457
451
|
version: '2.0'
|
458
452
|
- - ">="
|
459
453
|
- !ruby/object:Gem::Version
|
460
|
-
version: 2.0.
|
454
|
+
version: 2.0.8.1
|
461
455
|
- !ruby/object:Gem::Dependency
|
462
456
|
name: capybara
|
463
457
|
requirement: !ruby/object:Gem::Requirement
|
464
458
|
requirements:
|
465
|
-
- -
|
459
|
+
- - "~>"
|
460
|
+
- !ruby/object:Gem::Version
|
461
|
+
version: '3.33'
|
462
|
+
- - ">="
|
466
463
|
- !ruby/object:Gem::Version
|
467
|
-
version: 3.
|
464
|
+
version: 3.33.0
|
468
465
|
type: :development
|
469
466
|
prerelease: false
|
470
467
|
version_requirements: !ruby/object:Gem::Requirement
|
471
468
|
requirements:
|
472
|
-
- -
|
469
|
+
- - "~>"
|
470
|
+
- !ruby/object:Gem::Version
|
471
|
+
version: '3.33'
|
472
|
+
- - ">="
|
473
473
|
- !ruby/object:Gem::Version
|
474
|
-
version: 3.
|
474
|
+
version: 3.33.0
|
475
475
|
description: Behaviour Driven Development with elegance and joy
|
476
476
|
email: cukes@googlegroups.com
|
477
477
|
executables:
|
@@ -560,6 +560,7 @@ files:
|
|
560
560
|
- lib/cucumber/formatter/message_builder.rb
|
561
561
|
- lib/cucumber/formatter/pretty.rb
|
562
562
|
- lib/cucumber/formatter/progress.rb
|
563
|
+
- lib/cucumber/formatter/publish_banner_printer.rb
|
563
564
|
- lib/cucumber/formatter/query/hook_by_test_step.rb
|
564
565
|
- lib/cucumber/formatter/query/pickle_by_test.rb
|
565
566
|
- lib/cucumber/formatter/query/pickle_step_by_test_step.rb
|
@@ -570,6 +571,7 @@ files:
|
|
570
571
|
- lib/cucumber/formatter/steps.rb
|
571
572
|
- lib/cucumber/formatter/summary.rb
|
572
573
|
- lib/cucumber/formatter/unicode.rb
|
574
|
+
- lib/cucumber/formatter/url_reporter.rb
|
573
575
|
- lib/cucumber/formatter/usage.rb
|
574
576
|
- lib/cucumber/gherkin/data_table_parser.rb
|
575
577
|
- lib/cucumber/gherkin/formatter/ansi_escapes.rb
|
@@ -608,6 +610,7 @@ files:
|
|
608
610
|
- lib/cucumber/step_match.rb
|
609
611
|
- lib/cucumber/step_match_search.rb
|
610
612
|
- lib/cucumber/term/ansicolor.rb
|
613
|
+
- lib/cucumber/term/banner.rb
|
611
614
|
- lib/cucumber/unit.rb
|
612
615
|
- lib/cucumber/version
|
613
616
|
- lib/simplecov_setup.rb
|
@@ -620,7 +623,7 @@ metadata:
|
|
620
623
|
documentation_uri: https://www.rubydoc.info/github/cucumber/cucumber-ruby/
|
621
624
|
mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
|
622
625
|
source_code_uri: https://github.com/cucumber/cucumber-ruby
|
623
|
-
post_install_message:
|
626
|
+
post_install_message:
|
624
627
|
rdoc_options:
|
625
628
|
- "--charset=UTF-8"
|
626
629
|
require_paths:
|
@@ -629,15 +632,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
629
632
|
requirements:
|
630
633
|
- - ">="
|
631
634
|
- !ruby/object:Gem::Version
|
632
|
-
version: '2.
|
635
|
+
version: '2.5'
|
633
636
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
634
637
|
requirements:
|
635
638
|
- - ">="
|
636
639
|
- !ruby/object:Gem::Version
|
637
640
|
version: '0'
|
638
641
|
requirements: []
|
639
|
-
rubygems_version: 3.
|
640
|
-
signing_key:
|
642
|
+
rubygems_version: 3.1.2
|
643
|
+
signing_key:
|
641
644
|
specification_version: 4
|
642
|
-
summary: cucumber-
|
645
|
+
summary: cucumber-5.0.0
|
643
646
|
test_files: []
|