cucumber 4.1.0 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a1f051aade812ee4bb28ab3670734b189ade8bc0cd0150a686e21874594ae62f
4
- data.tar.gz: 80c272791953dc442492c0571acffc628cb7b1f37a28a00adeef413bc7f76e1b
3
+ metadata.gz: b3c9c9e718ba5a344adfb97aaebfb58f5c99bb6f8142bb74c115c9b7fe94d0f3
4
+ data.tar.gz: 3a70805fa19b0b83393e61853a6803eecc3b5cfd578a3f1e2201c258fa11b107
5
5
  SHA512:
6
- metadata.gz: 5026e105060af702f3b0adf50f3925ce04fdee7de79c2482093831cab838e2a605d69c056733d7820b6592c7229ee93e1ce64b80ae373ac7acd29f11d113d3a8
7
- data.tar.gz: c66fe1effa60270eb430bc2c381252e5c3da5dec524e49c58a7e508febaeb0b1398791f75eba5542395672b2431dafcfb820da2870410a52474ebc157bfbe333
6
+ metadata.gz: 81ed3402348bf4882f9e8a3b43e3b926396813d844cb93c00e1bfecac15f3fb7672750e0162c01182bada9aed90aff96d1751d66fe3bcd7ff9a0bb0b10052c29
7
+ data.tar.gz: 8f13726940d23325f2f8278dd6c6ddabbbe4cec7fa3b61d7066c2c068b3c326af011bb6eca6b4a18c0cc9ffa00043bb535d2932185259f60baf51ebefbd19087
@@ -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
@@ -59,13 +59,13 @@ help us to correct style violations reported here:
59
59
 
60
60
  ## Release Process
61
61
 
62
- * Bump the version number in `lib/cucumber/version`.
63
- * Make sure `CHANGELOG.md` is updated with the upcoming version number, and has entries for all fixes.
64
-
65
- Now release it
66
-
67
- bundle update
68
- bundle exec rake
69
- git commit -m "Release X.Y.Z"
70
- # Make sure you run gem signin as the cukebot@cucumber.io user before running the following step. Credentials can be found in 1Password
71
- rake release
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
- begin
28
- get_to_green
29
- if tainted
30
- rerun_all_tests
31
- rerun_all_features if all_good
32
- else
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
@@ -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
- begin
201
- factory = formatter_class(format)
202
- yield factory,
203
- formatter_options,
204
- path_or_io
205
- rescue Exception => e # rubocop:disable Lint/RescueException
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
- def open(url, https_verify_mode = nil)
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
- post_content(@uri, @method, @headers)
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 post_content(uri, method, headers, attempt = 10)
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
- response
124
+ uri
120
125
  when Net::HTTPRedirection
121
- post_content(URI(response['Location']), method, headers, attempt - 1)
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) || super
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 path_or_url_or_io.respond_to?(:write)
13
- io = if path_or_url_or_io.match(%r{^https?://})
14
- HTTPIO.open(path_or_url_or_io)
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
- at_exit do
19
- unless io.closed?
20
- io.flush
21
- io.close
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
- io
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)
@@ -13,9 +13,7 @@ Before do
13
13
  end
14
14
 
15
15
  After do
16
- begin
17
- RSpec::Mocks.verify
18
- ensure
19
- RSpec::Mocks.teardown
20
- end
16
+ RSpec::Mocks.verify
17
+ ensure
18
+ RSpec::Mocks.teardown
21
19
  end
@@ -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
@@ -1 +1 @@
1
- 4.1.0
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.1.0
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-07-01 00:00:00.000000000 Z
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.3
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.3
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: '7.1'
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: '7.1'
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: 1.0.0
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: 1.0.0
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.1'
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.1'
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: '14.0'
101
+ version: '15.0'
102
102
  - - ">="
103
103
  - !ruby/object:Gem::Version
104
- version: 14.0.1
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: '14.0'
111
+ version: '15.0'
112
112
  - - ">="
113
113
  - !ruby/object:Gem::Version
114
- version: 14.0.1
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: '7.0'
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: '7.0'
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: '12.2'
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: '12.2'
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: '3.1'
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: '3.1'
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.0'
221
+ version: '1.2'
228
222
  - - ">="
229
223
  - !ruby/object:Gem::Version
230
- version: 1.0.2
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.0'
231
+ version: '1.2'
238
232
  - - ">="
239
233
  - !ruby/object:Gem::Version
240
- version: 1.0.2
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.4
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.4
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.12'
261
+ version: '0.13'
268
262
  - - ">="
269
263
  - !ruby/object:Gem::Version
270
- version: 0.12.2
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.12'
271
+ version: '0.13'
278
272
  - - ">="
279
273
  - !ruby/object:Gem::Version
280
- version: 0.12.2
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: '12.3'
281
+ version: '13.0'
288
282
  - - ">="
289
283
  - !ruby/object:Gem::Version
290
- version: 12.3.3
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: '12.3'
291
+ version: '13.0'
298
292
  - - ">="
299
293
  - !ruby/object:Gem::Version
300
- version: 12.3.3
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.8'
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.8'
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.17'
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.17'
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: '1.2'
361
+ version: '3.3'
368
362
  - - ">="
369
363
  - !ruby/object:Gem::Version
370
- version: 1.2.3
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: '1.2'
371
+ version: '3.3'
378
372
  - - ">="
379
373
  - !ruby/object:Gem::Version
380
- version: 1.2.3
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.14'
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.14'
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.5
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.5
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.15.0
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.15.0
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.3'
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.0.6
640
- signing_key:
642
+ rubygems_version: 3.1.2
643
+ signing_key:
641
644
  specification_version: 4
642
- summary: cucumber-4.1.0
645
+ summary: cucumber-5.0.0
643
646
  test_files: []