cucumber 4.0.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 +70 -1
- 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/step_hooks.rb +5 -2
- data/lib/cucumber/runtime/support_code.rb +1 -1
- data/lib/cucumber/runtime.rb +9 -22
- data/lib/cucumber/term/banner.rb +56 -0
- data/lib/cucumber/version +1 -1
- metadata +142 -113
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,75 @@ 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
|
+
|
|
56
|
+
## [4.1.0](https://github.com/cucumber/cucumber-ruby/compare/v4.0.1...v4.1.0)
|
|
57
|
+
|
|
58
|
+
### Changed
|
|
59
|
+
|
|
60
|
+
* Use [`cucumber-create-meta`](https://rubygems.org/gems/cucumber-create-meta) to produce the `Meta` message before the run.
|
|
61
|
+
|
|
62
|
+
* Updated gems:
|
|
63
|
+
* `cucumber-wire` ~> 3.1.0
|
|
64
|
+
* `cucumber-core` ~> 7.1.0
|
|
65
|
+
* `cucumber-gherkin` ~> 14.0.1
|
|
66
|
+
* Fix issue with empty feature files [#1427](https://github.com/cucumber/cucumber-ruby/issues/1427)
|
|
67
|
+
* `cucumber-messages` ~> 12.2.0
|
|
68
|
+
* `cucumber-html-formatter` ~> 7.0.0
|
|
69
|
+
* Fix issue with Hook attachments [#1420](https://github.com/cucumber/cucumber-ruby/issues/1420)
|
|
70
|
+
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
* `AfterStep` hook do not cause issue when running `message` formatter. [#1433](https://github.com/cucumber/cucumber-ruby/issues/1433) - [#1434](https://github.com/cucumber/cucumber-ruby/pull/1434)
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
## [4.0.1](https://github.com/cucumber/cucumber-ruby/compare/v4.0.0...v4.0.1)
|
|
77
|
+
|
|
78
|
+
### Fixed
|
|
79
|
+
|
|
80
|
+
* force reference to `diff-lcs` to 1.3 as 1.4 introduced breaking changes.
|
|
81
|
+
|
|
13
82
|
## [4.0.0](https://github.com/cucumber/cucumber-ruby/compare/v4.0.0.rc.5...v4.0.0)
|
|
14
83
|
|
|
15
84
|
### Changed
|
|
@@ -91,7 +160,7 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
|
|
|
91
160
|
* If you wish to alter this, then you can set a top level config option: `Cucumber.use_legacy_autoloader`
|
|
92
161
|
* Like most config options, setting this inside a `spec_helper.rb` or `env.rb` file is advised
|
|
93
162
|
* For more information on this change, including why it was made. Please read this
|
|
94
|
-
[Blog Post](
|
|
163
|
+
[Blog Post](https://cucumber.io/blog/open-source/tweaking-cucumber-rubys-auto-loader/)
|
|
95
164
|
([#1349](https://github.com/cucumber/cucumber-ruby/pull/1349),
|
|
96
165
|
[#1043](https://github.com/cucumber/cucumber-ruby/issues/1043)
|
|
97
166
|
[luke-hill](https://github.com/luke-hill))
|
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)
|
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
module Cucumber
|
|
4
4
|
class Runtime
|
|
5
5
|
class StepHooks
|
|
6
|
-
def initialize(id_generator, hooks)
|
|
6
|
+
def initialize(id_generator, hooks, event_bus)
|
|
7
7
|
@hooks = hooks
|
|
8
8
|
@id_generator = id_generator
|
|
9
|
+
@event_bus = event_bus
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
def apply(test_steps)
|
|
@@ -19,7 +20,9 @@ module Cucumber
|
|
|
19
20
|
def after_step_hooks(test_step)
|
|
20
21
|
@hooks.map do |hook|
|
|
21
22
|
action = ->(*args) { hook.invoke('AfterStep', [args, test_step]) }
|
|
22
|
-
Hooks.after_step_hook(@id_generator.new_id, test_step, hook.location, &action)
|
|
23
|
+
hook_step = Hooks.after_step_hook(@id_generator.new_id, test_step, hook.location, &action)
|
|
24
|
+
@event_bus.hook_test_step_created(hook_step, hook)
|
|
25
|
+
hook_step
|
|
23
26
|
end
|
|
24
27
|
end
|
|
25
28
|
end
|
|
@@ -104,7 +104,7 @@ module Cucumber
|
|
|
104
104
|
def find_after_step_hooks(test_case)
|
|
105
105
|
scenario = RunningTestCase.new(test_case)
|
|
106
106
|
hooks = registry.hooks_for(:after_step, scenario)
|
|
107
|
-
StepHooks.new(@configuration.id_generator, hooks)
|
|
107
|
+
StepHooks.new(@configuration.id_generator, hooks, @configuration.event_bus)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
def apply_before_hooks(test_case)
|
data/lib/cucumber/runtime.rb
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require 'fileutils'
|
|
4
4
|
require 'cucumber/configuration'
|
|
5
|
+
require 'cucumber/create_meta'
|
|
5
6
|
require 'cucumber/load_path'
|
|
6
7
|
require 'cucumber/formatter/duration'
|
|
7
8
|
require 'cucumber/file_specs'
|
|
@@ -65,7 +66,7 @@ module Cucumber
|
|
|
65
66
|
require 'cucumber/wire/plugin'
|
|
66
67
|
def run!
|
|
67
68
|
@configuration.notify :envelope, Cucumber::Messages::Envelope.new(
|
|
68
|
-
meta:
|
|
69
|
+
meta: Cucumber::CreateMeta.create_meta('cucumber-ruby', Cucumber::VERSION)
|
|
69
70
|
)
|
|
70
71
|
|
|
71
72
|
load_step_definitions
|
|
@@ -105,27 +106,6 @@ module Cucumber
|
|
|
105
106
|
Core::Test::DocString.new(string_without_triple_quotes, content_type)
|
|
106
107
|
end
|
|
107
108
|
|
|
108
|
-
def make_meta
|
|
109
|
-
Cucumber::Messages::Meta.new(
|
|
110
|
-
protocol_version: Cucumber::Messages::VERSION,
|
|
111
|
-
implementation: Cucumber::Messages::Meta::Product.new(
|
|
112
|
-
name: 'cucumber-ruby',
|
|
113
|
-
version: Cucumber::VERSION
|
|
114
|
-
),
|
|
115
|
-
runtime: Cucumber::Messages::Meta::Product.new(
|
|
116
|
-
name: RUBY_ENGINE,
|
|
117
|
-
version: RUBY_VERSION
|
|
118
|
-
),
|
|
119
|
-
os: Cucumber::Messages::Meta::Product.new(
|
|
120
|
-
name: RbConfig::CONFIG['target_os'],
|
|
121
|
-
version: Sys::Uname.uname.version
|
|
122
|
-
),
|
|
123
|
-
cpu: Cucumber::Messages::Meta::Product.new(
|
|
124
|
-
name: RbConfig::CONFIG['target_cpu']
|
|
125
|
-
)
|
|
126
|
-
)
|
|
127
|
-
end
|
|
128
|
-
|
|
129
109
|
private
|
|
130
110
|
|
|
131
111
|
def fire_after_configuration_hook #:nodoc:
|
|
@@ -186,11 +166,14 @@ module Cucumber
|
|
|
186
166
|
|
|
187
167
|
require 'cucumber/formatter/ignore_missing_messages'
|
|
188
168
|
require 'cucumber/formatter/fail_fast'
|
|
169
|
+
require 'cucumber/formatter/publish_banner_printer'
|
|
189
170
|
require 'cucumber/core/report/summary'
|
|
171
|
+
|
|
190
172
|
def report
|
|
191
173
|
return @report if @report
|
|
192
174
|
reports = [summary_report] + formatters
|
|
193
175
|
reports << fail_fast_report if @configuration.fail_fast?
|
|
176
|
+
reports << publish_banner_printer unless @configuration.publish_quiet?
|
|
194
177
|
@report ||= Formatter::Fanout.new(reports)
|
|
195
178
|
end
|
|
196
179
|
|
|
@@ -202,6 +185,10 @@ module Cucumber
|
|
|
202
185
|
@fail_fast_report ||= Formatter::FailFast.new(@configuration)
|
|
203
186
|
end
|
|
204
187
|
|
|
188
|
+
def publish_banner_printer
|
|
189
|
+
@publish_banner_printer ||= Formatter::PublishBannerPrinter.new(@configuration)
|
|
190
|
+
end
|
|
191
|
+
|
|
205
192
|
def formatters
|
|
206
193
|
@formatters ||=
|
|
207
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,7 +1,7 @@
|
|
|
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
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
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,147 +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.0.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: '8.0'
|
|
49
52
|
- - ">="
|
|
50
53
|
- !ruby/object:Gem::Version
|
|
51
|
-
version:
|
|
54
|
+
version: 8.0.1
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: cucumber-create-meta
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - "~>"
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '2.0'
|
|
62
|
+
- - ">="
|
|
63
|
+
- !ruby/object:Gem::Version
|
|
64
|
+
version: 2.0.1
|
|
65
|
+
type: :runtime
|
|
66
|
+
prerelease: false
|
|
67
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
68
|
+
requirements:
|
|
52
69
|
- - "~>"
|
|
53
70
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '
|
|
71
|
+
version: '2.0'
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: 2.0.1
|
|
55
75
|
- !ruby/object:Gem::Dependency
|
|
56
76
|
name: cucumber-cucumber-expressions
|
|
57
77
|
requirement: !ruby/object:Gem::Requirement
|
|
58
78
|
requirements:
|
|
59
|
-
- - ">="
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: 10.1.0
|
|
62
79
|
- - "~>"
|
|
63
80
|
- !ruby/object:Gem::Version
|
|
64
|
-
version: '10.
|
|
81
|
+
version: '10.3'
|
|
82
|
+
- - ">="
|
|
83
|
+
- !ruby/object:Gem::Version
|
|
84
|
+
version: 10.3.0
|
|
65
85
|
type: :runtime
|
|
66
86
|
prerelease: false
|
|
67
87
|
version_requirements: !ruby/object:Gem::Requirement
|
|
68
88
|
requirements:
|
|
69
|
-
- - ">="
|
|
70
|
-
- !ruby/object:Gem::Version
|
|
71
|
-
version: 10.1.0
|
|
72
89
|
- - "~>"
|
|
73
90
|
- !ruby/object:Gem::Version
|
|
74
|
-
version: '10.
|
|
91
|
+
version: '10.3'
|
|
92
|
+
- - ">="
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: 10.3.0
|
|
75
95
|
- !ruby/object:Gem::Dependency
|
|
76
96
|
name: cucumber-gherkin
|
|
77
97
|
requirement: !ruby/object:Gem::Requirement
|
|
78
98
|
requirements:
|
|
79
|
-
- - ">="
|
|
80
|
-
- !ruby/object:Gem::Version
|
|
81
|
-
version: 13.0.0
|
|
82
99
|
- - "~>"
|
|
83
100
|
- !ruby/object:Gem::Version
|
|
84
|
-
version: '
|
|
101
|
+
version: '15.0'
|
|
102
|
+
- - ">="
|
|
103
|
+
- !ruby/object:Gem::Version
|
|
104
|
+
version: 15.0.2
|
|
85
105
|
type: :runtime
|
|
86
106
|
prerelease: false
|
|
87
107
|
version_requirements: !ruby/object:Gem::Requirement
|
|
88
108
|
requirements:
|
|
89
|
-
- - ">="
|
|
90
|
-
- !ruby/object:Gem::Version
|
|
91
|
-
version: 13.0.0
|
|
92
109
|
- - "~>"
|
|
93
110
|
- !ruby/object:Gem::Version
|
|
94
|
-
version: '
|
|
111
|
+
version: '15.0'
|
|
112
|
+
- - ">="
|
|
113
|
+
- !ruby/object:Gem::Version
|
|
114
|
+
version: 15.0.2
|
|
95
115
|
- !ruby/object:Gem::Dependency
|
|
96
116
|
name: cucumber-html-formatter
|
|
97
117
|
requirement: !ruby/object:Gem::Requirement
|
|
98
118
|
requirements:
|
|
99
119
|
- - "~>"
|
|
100
120
|
- !ruby/object:Gem::Version
|
|
101
|
-
version: '
|
|
121
|
+
version: '9.0'
|
|
102
122
|
- - ">="
|
|
103
123
|
- !ruby/object:Gem::Version
|
|
104
|
-
version:
|
|
124
|
+
version: 9.0.0
|
|
105
125
|
type: :runtime
|
|
106
126
|
prerelease: false
|
|
107
127
|
version_requirements: !ruby/object:Gem::Requirement
|
|
108
128
|
requirements:
|
|
109
129
|
- - "~>"
|
|
110
130
|
- !ruby/object:Gem::Version
|
|
111
|
-
version: '
|
|
131
|
+
version: '9.0'
|
|
112
132
|
- - ">="
|
|
113
133
|
- !ruby/object:Gem::Version
|
|
114
|
-
version:
|
|
134
|
+
version: 9.0.0
|
|
115
135
|
- !ruby/object:Gem::Dependency
|
|
116
136
|
name: cucumber-messages
|
|
117
137
|
requirement: !ruby/object:Gem::Requirement
|
|
118
138
|
requirements:
|
|
119
139
|
- - "~>"
|
|
120
140
|
- !ruby/object:Gem::Version
|
|
121
|
-
version: '
|
|
141
|
+
version: '13.0'
|
|
122
142
|
- - ">="
|
|
123
143
|
- !ruby/object:Gem::Version
|
|
124
|
-
version:
|
|
144
|
+
version: 13.0.1
|
|
125
145
|
type: :runtime
|
|
126
146
|
prerelease: false
|
|
127
147
|
version_requirements: !ruby/object:Gem::Requirement
|
|
128
148
|
requirements:
|
|
129
149
|
- - "~>"
|
|
130
150
|
- !ruby/object:Gem::Version
|
|
131
|
-
version: '
|
|
151
|
+
version: '13.0'
|
|
132
152
|
- - ">="
|
|
133
153
|
- !ruby/object:Gem::Version
|
|
134
|
-
version:
|
|
154
|
+
version: 13.0.1
|
|
135
155
|
- !ruby/object:Gem::Dependency
|
|
136
156
|
name: cucumber-wire
|
|
137
157
|
requirement: !ruby/object:Gem::Requirement
|
|
138
158
|
requirements:
|
|
139
|
-
- - ">="
|
|
140
|
-
- !ruby/object:Gem::Version
|
|
141
|
-
version: 3.0.0
|
|
142
159
|
- - "~>"
|
|
143
160
|
- !ruby/object:Gem::Version
|
|
144
|
-
version: '
|
|
161
|
+
version: '4.0'
|
|
162
|
+
- - ">="
|
|
163
|
+
- !ruby/object:Gem::Version
|
|
164
|
+
version: 4.0.1
|
|
145
165
|
type: :runtime
|
|
146
166
|
prerelease: false
|
|
147
167
|
version_requirements: !ruby/object:Gem::Requirement
|
|
148
168
|
requirements:
|
|
149
|
-
- - ">="
|
|
150
|
-
- !ruby/object:Gem::Version
|
|
151
|
-
version: 3.0.0
|
|
152
169
|
- - "~>"
|
|
153
170
|
- !ruby/object:Gem::Version
|
|
154
|
-
version: '
|
|
171
|
+
version: '4.0'
|
|
172
|
+
- - ">="
|
|
173
|
+
- !ruby/object:Gem::Version
|
|
174
|
+
version: 4.0.1
|
|
155
175
|
- !ruby/object:Gem::Dependency
|
|
156
176
|
name: diff-lcs
|
|
157
177
|
requirement: !ruby/object:Gem::Requirement
|
|
158
178
|
requirements:
|
|
159
|
-
- - ">="
|
|
160
|
-
- !ruby/object:Gem::Version
|
|
161
|
-
version: '1.3'
|
|
162
179
|
- - "~>"
|
|
163
180
|
- !ruby/object:Gem::Version
|
|
164
|
-
version: '1.
|
|
181
|
+
version: '1.4'
|
|
182
|
+
- - ">="
|
|
183
|
+
- !ruby/object:Gem::Version
|
|
184
|
+
version: 1.4.4
|
|
165
185
|
type: :runtime
|
|
166
186
|
prerelease: false
|
|
167
187
|
version_requirements: !ruby/object:Gem::Requirement
|
|
168
188
|
requirements:
|
|
169
|
-
- - ">="
|
|
170
|
-
- !ruby/object:Gem::Version
|
|
171
|
-
version: '1.3'
|
|
172
189
|
- - "~>"
|
|
173
190
|
- !ruby/object:Gem::Version
|
|
174
|
-
version: '1.
|
|
191
|
+
version: '1.4'
|
|
192
|
+
- - ">="
|
|
193
|
+
- !ruby/object:Gem::Version
|
|
194
|
+
version: 1.4.4
|
|
175
195
|
- !ruby/object:Gem::Dependency
|
|
176
196
|
name: multi_test
|
|
177
197
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -198,20 +218,20 @@ dependencies:
|
|
|
198
218
|
requirements:
|
|
199
219
|
- - "~>"
|
|
200
220
|
- !ruby/object:Gem::Version
|
|
201
|
-
version: '1.
|
|
221
|
+
version: '1.2'
|
|
202
222
|
- - ">="
|
|
203
223
|
- !ruby/object:Gem::Version
|
|
204
|
-
version: 1.
|
|
224
|
+
version: 1.2.1
|
|
205
225
|
type: :runtime
|
|
206
226
|
prerelease: false
|
|
207
227
|
version_requirements: !ruby/object:Gem::Requirement
|
|
208
228
|
requirements:
|
|
209
229
|
- - "~>"
|
|
210
230
|
- !ruby/object:Gem::Version
|
|
211
|
-
version: '1.
|
|
231
|
+
version: '1.2'
|
|
212
232
|
- - ">="
|
|
213
233
|
- !ruby/object:Gem::Version
|
|
214
|
-
version: 1.
|
|
234
|
+
version: 1.2.1
|
|
215
235
|
- !ruby/object:Gem::Dependency
|
|
216
236
|
name: nokogiri
|
|
217
237
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -221,7 +241,7 @@ dependencies:
|
|
|
221
241
|
version: '1.10'
|
|
222
242
|
- - ">="
|
|
223
243
|
- !ruby/object:Gem::Version
|
|
224
|
-
version: 1.10.
|
|
244
|
+
version: 1.10.10
|
|
225
245
|
type: :development
|
|
226
246
|
prerelease: false
|
|
227
247
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -231,87 +251,87 @@ dependencies:
|
|
|
231
251
|
version: '1.10'
|
|
232
252
|
- - ">="
|
|
233
253
|
- !ruby/object:Gem::Version
|
|
234
|
-
version: 1.10.
|
|
254
|
+
version: 1.10.10
|
|
235
255
|
- !ruby/object:Gem::Dependency
|
|
236
256
|
name: pry
|
|
237
257
|
requirement: !ruby/object:Gem::Requirement
|
|
238
258
|
requirements:
|
|
239
259
|
- - "~>"
|
|
240
260
|
- !ruby/object:Gem::Version
|
|
241
|
-
version: '0.
|
|
261
|
+
version: '0.13'
|
|
242
262
|
- - ">="
|
|
243
263
|
- !ruby/object:Gem::Version
|
|
244
|
-
version: 0.
|
|
264
|
+
version: 0.13.1
|
|
245
265
|
type: :development
|
|
246
266
|
prerelease: false
|
|
247
267
|
version_requirements: !ruby/object:Gem::Requirement
|
|
248
268
|
requirements:
|
|
249
269
|
- - "~>"
|
|
250
270
|
- !ruby/object:Gem::Version
|
|
251
|
-
version: '0.
|
|
271
|
+
version: '0.13'
|
|
252
272
|
- - ">="
|
|
253
273
|
- !ruby/object:Gem::Version
|
|
254
|
-
version: 0.
|
|
274
|
+
version: 0.13.1
|
|
255
275
|
- !ruby/object:Gem::Dependency
|
|
256
276
|
name: rake
|
|
257
277
|
requirement: !ruby/object:Gem::Requirement
|
|
258
278
|
requirements:
|
|
259
279
|
- - "~>"
|
|
260
280
|
- !ruby/object:Gem::Version
|
|
261
|
-
version: '
|
|
281
|
+
version: '13.0'
|
|
262
282
|
- - ">="
|
|
263
283
|
- !ruby/object:Gem::Version
|
|
264
|
-
version:
|
|
284
|
+
version: 13.0.1
|
|
265
285
|
type: :development
|
|
266
286
|
prerelease: false
|
|
267
287
|
version_requirements: !ruby/object:Gem::Requirement
|
|
268
288
|
requirements:
|
|
269
289
|
- - "~>"
|
|
270
290
|
- !ruby/object:Gem::Version
|
|
271
|
-
version: '
|
|
291
|
+
version: '13.0'
|
|
272
292
|
- - ">="
|
|
273
293
|
- !ruby/object:Gem::Version
|
|
274
|
-
version:
|
|
294
|
+
version: 13.0.1
|
|
275
295
|
- !ruby/object:Gem::Dependency
|
|
276
296
|
name: rspec
|
|
277
297
|
requirement: !ruby/object:Gem::Requirement
|
|
278
298
|
requirements:
|
|
279
|
-
- - ">="
|
|
280
|
-
- !ruby/object:Gem::Version
|
|
281
|
-
version: 3.8.0
|
|
282
299
|
- - "~>"
|
|
283
300
|
- !ruby/object:Gem::Version
|
|
284
|
-
version: '3.
|
|
301
|
+
version: '3.9'
|
|
302
|
+
- - ">="
|
|
303
|
+
- !ruby/object:Gem::Version
|
|
304
|
+
version: 3.9.0
|
|
285
305
|
type: :development
|
|
286
306
|
prerelease: false
|
|
287
307
|
version_requirements: !ruby/object:Gem::Requirement
|
|
288
308
|
requirements:
|
|
289
|
-
- - ">="
|
|
290
|
-
- !ruby/object:Gem::Version
|
|
291
|
-
version: 3.8.0
|
|
292
309
|
- - "~>"
|
|
293
310
|
- !ruby/object:Gem::Version
|
|
294
|
-
version: '3.
|
|
311
|
+
version: '3.9'
|
|
312
|
+
- - ">="
|
|
313
|
+
- !ruby/object:Gem::Version
|
|
314
|
+
version: 3.9.0
|
|
295
315
|
- !ruby/object:Gem::Dependency
|
|
296
316
|
name: simplecov
|
|
297
317
|
requirement: !ruby/object:Gem::Requirement
|
|
298
318
|
requirements:
|
|
299
|
-
- - ">="
|
|
300
|
-
- !ruby/object:Gem::Version
|
|
301
|
-
version: 0.17.0
|
|
302
319
|
- - "~>"
|
|
303
320
|
- !ruby/object:Gem::Version
|
|
304
|
-
version: '0.
|
|
321
|
+
version: '0.19'
|
|
322
|
+
- - ">="
|
|
323
|
+
- !ruby/object:Gem::Version
|
|
324
|
+
version: 0.19.0
|
|
305
325
|
type: :development
|
|
306
326
|
prerelease: false
|
|
307
327
|
version_requirements: !ruby/object:Gem::Requirement
|
|
308
328
|
requirements:
|
|
309
|
-
- - ">="
|
|
310
|
-
- !ruby/object:Gem::Version
|
|
311
|
-
version: 0.17.0
|
|
312
329
|
- - "~>"
|
|
313
330
|
- !ruby/object:Gem::Version
|
|
314
|
-
version: '0.
|
|
331
|
+
version: '0.19'
|
|
332
|
+
- - ">="
|
|
333
|
+
- !ruby/object:Gem::Version
|
|
334
|
+
version: 0.19.0
|
|
315
335
|
- !ruby/object:Gem::Dependency
|
|
316
336
|
name: syntax
|
|
317
337
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -338,80 +358,80 @@ dependencies:
|
|
|
338
358
|
requirements:
|
|
339
359
|
- - "~>"
|
|
340
360
|
- !ruby/object:Gem::Version
|
|
341
|
-
version: '
|
|
361
|
+
version: '3.3'
|
|
342
362
|
- - ">="
|
|
343
363
|
- !ruby/object:Gem::Version
|
|
344
|
-
version:
|
|
364
|
+
version: 3.3.6
|
|
345
365
|
type: :development
|
|
346
366
|
prerelease: false
|
|
347
367
|
version_requirements: !ruby/object:Gem::Requirement
|
|
348
368
|
requirements:
|
|
349
369
|
- - "~>"
|
|
350
370
|
- !ruby/object:Gem::Version
|
|
351
|
-
version: '
|
|
371
|
+
version: '3.3'
|
|
352
372
|
- - ">="
|
|
353
373
|
- !ruby/object:Gem::Version
|
|
354
|
-
version:
|
|
374
|
+
version: 3.3.6
|
|
355
375
|
- !ruby/object:Gem::Dependency
|
|
356
376
|
name: webrick
|
|
357
377
|
requirement: !ruby/object:Gem::Requirement
|
|
358
378
|
requirements:
|
|
359
|
-
- - ">="
|
|
360
|
-
- !ruby/object:Gem::Version
|
|
361
|
-
version: 1.6.0
|
|
362
379
|
- - "~>"
|
|
363
380
|
- !ruby/object:Gem::Version
|
|
364
381
|
version: '1.6'
|
|
382
|
+
- - ">="
|
|
383
|
+
- !ruby/object:Gem::Version
|
|
384
|
+
version: 1.6.0
|
|
365
385
|
type: :development
|
|
366
386
|
prerelease: false
|
|
367
387
|
version_requirements: !ruby/object:Gem::Requirement
|
|
368
388
|
requirements:
|
|
369
|
-
- - ">="
|
|
370
|
-
- !ruby/object:Gem::Version
|
|
371
|
-
version: 1.6.0
|
|
372
389
|
- - "~>"
|
|
373
390
|
- !ruby/object:Gem::Version
|
|
374
391
|
version: '1.6'
|
|
392
|
+
- - ">="
|
|
393
|
+
- !ruby/object:Gem::Version
|
|
394
|
+
version: 1.6.0
|
|
375
395
|
- !ruby/object:Gem::Dependency
|
|
376
396
|
name: octokit
|
|
377
397
|
requirement: !ruby/object:Gem::Requirement
|
|
378
398
|
requirements:
|
|
379
|
-
- - ">="
|
|
380
|
-
- !ruby/object:Gem::Version
|
|
381
|
-
version: 4.14.0
|
|
382
399
|
- - "~>"
|
|
383
400
|
- !ruby/object:Gem::Version
|
|
384
|
-
version: '4.
|
|
401
|
+
version: '4.18'
|
|
402
|
+
- - ">="
|
|
403
|
+
- !ruby/object:Gem::Version
|
|
404
|
+
version: 4.18.0
|
|
385
405
|
type: :development
|
|
386
406
|
prerelease: false
|
|
387
407
|
version_requirements: !ruby/object:Gem::Requirement
|
|
388
408
|
requirements:
|
|
389
|
-
- - ">="
|
|
390
|
-
- !ruby/object:Gem::Version
|
|
391
|
-
version: 4.14.0
|
|
392
409
|
- - "~>"
|
|
393
410
|
- !ruby/object:Gem::Version
|
|
394
|
-
version: '4.
|
|
411
|
+
version: '4.18'
|
|
412
|
+
- - ">="
|
|
413
|
+
- !ruby/object:Gem::Version
|
|
414
|
+
version: 4.18.0
|
|
395
415
|
- !ruby/object:Gem::Dependency
|
|
396
416
|
name: rack-test
|
|
397
417
|
requirement: !ruby/object:Gem::Requirement
|
|
398
418
|
requirements:
|
|
399
|
-
- - ">="
|
|
400
|
-
- !ruby/object:Gem::Version
|
|
401
|
-
version: 1.1.0
|
|
402
419
|
- - "~>"
|
|
403
420
|
- !ruby/object:Gem::Version
|
|
404
421
|
version: '1.1'
|
|
422
|
+
- - ">="
|
|
423
|
+
- !ruby/object:Gem::Version
|
|
424
|
+
version: 1.1.0
|
|
405
425
|
type: :development
|
|
406
426
|
prerelease: false
|
|
407
427
|
version_requirements: !ruby/object:Gem::Requirement
|
|
408
428
|
requirements:
|
|
409
|
-
- - ">="
|
|
410
|
-
- !ruby/object:Gem::Version
|
|
411
|
-
version: 1.1.0
|
|
412
429
|
- - "~>"
|
|
413
430
|
- !ruby/object:Gem::Version
|
|
414
431
|
version: '1.1'
|
|
432
|
+
- - ">="
|
|
433
|
+
- !ruby/object:Gem::Version
|
|
434
|
+
version: 1.1.0
|
|
415
435
|
- !ruby/object:Gem::Dependency
|
|
416
436
|
name: sinatra
|
|
417
437
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -421,7 +441,7 @@ dependencies:
|
|
|
421
441
|
version: '2.0'
|
|
422
442
|
- - ">="
|
|
423
443
|
- !ruby/object:Gem::Version
|
|
424
|
-
version: 2.0.
|
|
444
|
+
version: 2.0.8.1
|
|
425
445
|
type: :development
|
|
426
446
|
prerelease: false
|
|
427
447
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -431,21 +451,27 @@ dependencies:
|
|
|
431
451
|
version: '2.0'
|
|
432
452
|
- - ">="
|
|
433
453
|
- !ruby/object:Gem::Version
|
|
434
|
-
version: 2.0.
|
|
454
|
+
version: 2.0.8.1
|
|
435
455
|
- !ruby/object:Gem::Dependency
|
|
436
456
|
name: capybara
|
|
437
457
|
requirement: !ruby/object:Gem::Requirement
|
|
438
458
|
requirements:
|
|
439
|
-
- -
|
|
459
|
+
- - "~>"
|
|
460
|
+
- !ruby/object:Gem::Version
|
|
461
|
+
version: '3.33'
|
|
462
|
+
- - ">="
|
|
440
463
|
- !ruby/object:Gem::Version
|
|
441
|
-
version: 3.
|
|
464
|
+
version: 3.33.0
|
|
442
465
|
type: :development
|
|
443
466
|
prerelease: false
|
|
444
467
|
version_requirements: !ruby/object:Gem::Requirement
|
|
445
468
|
requirements:
|
|
446
|
-
- -
|
|
469
|
+
- - "~>"
|
|
470
|
+
- !ruby/object:Gem::Version
|
|
471
|
+
version: '3.33'
|
|
472
|
+
- - ">="
|
|
447
473
|
- !ruby/object:Gem::Version
|
|
448
|
-
version: 3.
|
|
474
|
+
version: 3.33.0
|
|
449
475
|
description: Behaviour Driven Development with elegance and joy
|
|
450
476
|
email: cukes@googlegroups.com
|
|
451
477
|
executables:
|
|
@@ -534,6 +560,7 @@ files:
|
|
|
534
560
|
- lib/cucumber/formatter/message_builder.rb
|
|
535
561
|
- lib/cucumber/formatter/pretty.rb
|
|
536
562
|
- lib/cucumber/formatter/progress.rb
|
|
563
|
+
- lib/cucumber/formatter/publish_banner_printer.rb
|
|
537
564
|
- lib/cucumber/formatter/query/hook_by_test_step.rb
|
|
538
565
|
- lib/cucumber/formatter/query/pickle_by_test.rb
|
|
539
566
|
- lib/cucumber/formatter/query/pickle_step_by_test_step.rb
|
|
@@ -544,6 +571,7 @@ files:
|
|
|
544
571
|
- lib/cucumber/formatter/steps.rb
|
|
545
572
|
- lib/cucumber/formatter/summary.rb
|
|
546
573
|
- lib/cucumber/formatter/unicode.rb
|
|
574
|
+
- lib/cucumber/formatter/url_reporter.rb
|
|
547
575
|
- lib/cucumber/formatter/usage.rb
|
|
548
576
|
- lib/cucumber/gherkin/data_table_parser.rb
|
|
549
577
|
- lib/cucumber/gherkin/formatter/ansi_escapes.rb
|
|
@@ -582,6 +610,7 @@ files:
|
|
|
582
610
|
- lib/cucumber/step_match.rb
|
|
583
611
|
- lib/cucumber/step_match_search.rb
|
|
584
612
|
- lib/cucumber/term/ansicolor.rb
|
|
613
|
+
- lib/cucumber/term/banner.rb
|
|
585
614
|
- lib/cucumber/unit.rb
|
|
586
615
|
- lib/cucumber/version
|
|
587
616
|
- lib/simplecov_setup.rb
|
|
@@ -603,15 +632,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
603
632
|
requirements:
|
|
604
633
|
- - ">="
|
|
605
634
|
- !ruby/object:Gem::Version
|
|
606
|
-
version: '2.
|
|
635
|
+
version: '2.5'
|
|
607
636
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
608
637
|
requirements:
|
|
609
638
|
- - ">="
|
|
610
639
|
- !ruby/object:Gem::Version
|
|
611
640
|
version: '0'
|
|
612
641
|
requirements: []
|
|
613
|
-
rubygems_version: 3.
|
|
642
|
+
rubygems_version: 3.1.2
|
|
614
643
|
signing_key:
|
|
615
644
|
specification_version: 4
|
|
616
|
-
summary: cucumber-
|
|
645
|
+
summary: cucumber-5.0.0
|
|
617
646
|
test_files: []
|