cucumber 5.0.0 → 5.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3c9c9e718ba5a344adfb97aaebfb58f5c99bb6f8142bb74c115c9b7fe94d0f3
4
- data.tar.gz: 3a70805fa19b0b83393e61853a6803eecc3b5cfd578a3f1e2201c258fa11b107
3
+ metadata.gz: 36830fb7cfa9895488ea7f11bb33f6267c94328b8b3a08da75749d26f4047479
4
+ data.tar.gz: 725299585226f1af48d00c12af192844af884ec49d44e6966c22a8a607bd9fa8
5
5
  SHA512:
6
- metadata.gz: 81ed3402348bf4882f9e8a3b43e3b926396813d844cb93c00e1bfecac15f3fb7672750e0162c01182bada9aed90aff96d1751d66fe3bcd7ff9a0bb0b10052c29
7
- data.tar.gz: 8f13726940d23325f2f8278dd6c6ddabbbe4cec7fa3b61d7066c2c068b3c326af011bb6eca6b4a18c0cc9ffa00043bb535d2932185259f60baf51ebefbd19087
6
+ metadata.gz: 807a72bba0f0a30c266b68afd4866ead55178f2ee2f72bd5a86331445f6de62bf320ebd2a848c05dd6c906c52aa6d082c1b5f241a65cc00e5ff6df14ffe3d6b8
7
+ data.tar.gz: d11cfaaa57bf35ffbbf54273317825179beb5db3ab106feacb30c7d0860ca6aeacf90404774ee92eafba100db00b5a25428ca7f3447262b0f05687b57d03aeae
@@ -10,7 +10,7 @@ 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)
13
+ ## [In GIT](https://github.com/cucumber/cucumber-ruby/compare/v5.2.0...master)
14
14
 
15
15
  ### Added
16
16
 
@@ -22,6 +22,51 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
22
22
 
23
23
  ### Fixed
24
24
 
25
+ ### Security fixes
26
+
27
+ ## [5.2.0](https://github.com/cucumber/cucumber-ruby/compare/v5.1.3...v5.2.0)
28
+
29
+ ### Changed
30
+
31
+ * `--publish` uses the response provided by the server as the banner [#1472](https://github.com/cucumber/cucumber-ruby/issues/1472)
32
+
33
+ ## [5.1.3](https://github.com/cucumber/cucumber-ruby/compare/v5.1.2...v5.1.3)
34
+
35
+ ### Fixed
36
+
37
+ * The `CUCUMBER_PUBLISH_TOKEN` now sets the correct HTTP header, following a fix in the curl option parser.
38
+
39
+ ## [5.1.2](https://github.com/cucumber/cucumber-ruby/compare/v5.1.1...v5.1.2)
40
+
41
+ ### Fixed
42
+
43
+ * Do not send headers after following redirection [#1475](https://github.com/cucumber/cucumber-ruby/pull/1475)
44
+
45
+ ## [5.1.1](https://github.com/cucumber/cucumber-ruby/compare/v5.1.0...v5.1.1)
46
+
47
+ ### Security fixes
48
+
49
+ * Update `cucumber-create-meta` to 2.0.2
50
+
51
+ ## [5.1.0](https://github.com/cucumber/cucumber-ruby/compare/v5.0.0...5.1.0)
52
+
53
+ ### Added
54
+
55
+ * `-X GET` in an `--out` URL will now issue a `GET` request *without* a body. If the response is `202 Accepted` *and*
56
+ the `Location` header is present, a new `PUT` request will be sent *with* the body.
57
+
58
+ The main reason for this added behaviour is to allow request bodies larger than 6Mb to be sent while using `--publish`.
59
+ This also improves performance since the request body is only sent once (previously it would be sent twice).
60
+
61
+ ### Changed
62
+
63
+ * Set banner border color to green when publishing reports
64
+ * Postpone removal of `--format=json`, `embed` and `puts` to version 6.0.0 in deprecation messages
65
+
66
+ ### Fixed
67
+
68
+ * Display banner on stderr when publishing reports [#1462](https://github.com/cucumber/cucumber-ruby/issues/1462)
69
+
25
70
  ## [5.0.0](https://github.com/cucumber/cucumber-ruby/compare/v4.1.0...5.0.0)
26
71
 
27
72
  ### Added
@@ -65,7 +65,9 @@ help us to correct style violations reported here:
65
65
  * Remove empty sections from `CHANGELOG.md`
66
66
  * Now release it:
67
67
 
68
- ```
69
- git commit -am "Release X.Y.Z"
70
- make release
71
- ```
68
+ ```
69
+ git commit -am "Release X.Y.Z"
70
+ make release
71
+ ```
72
+
73
+ * Finally, update the cucumber-ruby version in the [documentation project](https://cucumber.io/docs/installation/) in [versions.yaml](https://github.com/cucumber/docs.cucumber.io/blob/master/data/versions.yaml) file.
@@ -9,7 +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
+ CUCUMBER_PUBLISH_URL = ENV['CUCUMBER_PUBLISH_URL'] || 'https://messages.cucumber.io/api/reports -X GET'
13
13
  INDENT = ' ' * 53
14
14
  BUILTIN_FORMATS = {
15
15
  'pretty' => ['Cucumber::Formatter::Pretty', 'Prints the feature as is - in colours.'],
@@ -335,7 +335,7 @@ Specify SEED to reproduce the shuffling from a previous run.
335
335
  'option is specified; all loading becomes explicit.',
336
336
  'Files in directories named "support" are still always',
337
337
  'loaded first when their parent directories are',
338
- 'required or if the "support" directoires themselves are',
338
+ 'required or if the "support" directories themselves are',
339
339
  'explicitly required.',
340
340
  'This option can be specified multiple times.'
341
341
  ]
@@ -367,7 +367,7 @@ Specify SEED to reproduce the shuffling from a previous run.
367
367
  end
368
368
 
369
369
  def require_jars(jars)
370
- Dir["#{jars}/**/*.jar"].each { |jar| require jar }
370
+ Dir["#{jars}/**/*.jar"].sort.each { |jar| require jar }
371
371
  end
372
372
 
373
373
  def publisher
@@ -41,7 +41,7 @@ module Cucumber
41
41
 
42
42
  module ForDevelopers
43
43
  def self.call(_message, _method, remove_after_version)
44
- raise "This method is due for removal after version #{remove_after_version}" if Cucumber::VERSION > remove_after_version
44
+ raise "This method is due for removal after version #{remove_after_version}" if Cucumber::VERSION >= remove_after_version
45
45
  end
46
46
  end
47
47
 
@@ -11,7 +11,7 @@ module Cucumber
11
11
  begin
12
12
  raise new(with_prefix(step_name)) # rubocop:disable Style/RaiseArgs
13
13
  rescue StandardError => e
14
- return e
14
+ e
15
15
  end
16
16
  end
17
17
 
@@ -136,7 +136,6 @@ module Cucumber
136
136
 
137
137
  private
138
138
 
139
- # rubocop:disable Metrics/PerceivedComplexity
140
139
  def process_scenario_container(container, original_previous_node)
141
140
  container.children.each do |child|
142
141
  previous_node = original_previous_node
@@ -158,7 +157,6 @@ module Cucumber
158
157
  end
159
158
  end
160
159
  end
161
- # rubocop:enable Metrics/PerceivedComplexity
162
160
  end
163
161
  end
164
162
  end
@@ -8,7 +8,7 @@ module Cucumber
8
8
  include Io
9
9
 
10
10
  def initialize(config)
11
- @io = ensure_io(config.out_stream)
11
+ @io = ensure_io(config.out_stream, config.error_stream)
12
12
  @html_formatter = Cucumber::HTMLFormatter::Formatter.new(@io)
13
13
  @html_formatter.write_pre_message
14
14
 
@@ -1,5 +1,6 @@
1
1
  require 'net/http'
2
2
  require 'tempfile'
3
+ require 'shellwords'
3
4
 
4
5
  module Cucumber
5
6
  module Formatter
@@ -18,48 +19,43 @@ module Cucumber
18
19
 
19
20
  class CurlOptionParser
20
21
  def self.parse(options)
21
- chunks = options.split(/\s/).compact
22
- http_method = 'PUT'
23
- url = chunks[0]
24
- headers = ''
25
-
26
- last_flag = nil
27
- chunks.each do |chunk|
28
- if ['-X', '--request'].include?(chunk)
29
- last_flag = '-X'
30
- next
31
- end
22
+ args = Shellwords.split(options)
32
23
 
33
- if chunk == '-H'
34
- last_flag = '-H'
35
- next
36
- end
37
-
38
- if last_flag == '-X'
39
- http_method = chunk
40
- last_flag = nil
24
+ url = nil
25
+ http_method = 'PUT'
26
+ headers = {}
27
+
28
+ until args.empty?
29
+ arg = args.shift
30
+ case arg
31
+ when '-X', '--request'
32
+ http_method = remove_arg_for(args, arg)
33
+ when '-H'
34
+ header_arg = remove_arg_for(args, arg)
35
+ headers = headers.merge(parse_header(header_arg))
36
+ else
37
+ raise StandardError, "#{options} was not a valid curl command. Can't set url to #{arg} it is already set to #{url}" if url
38
+ url = arg
41
39
  end
42
-
43
- headers += chunk if last_flag == '-H'
44
40
  end
41
+ raise StandardError, "#{options} was not a valid curl command" unless url
45
42
 
46
43
  [
47
44
  url,
48
45
  http_method,
49
- make_headers(headers)
46
+ headers
50
47
  ]
51
48
  end
52
49
 
53
- def self.make_headers(headers)
54
- hash_headers = {}
55
- str_scanner = /("(?<key>[^":]+)\s*:\s*(?<value>[^":]+)")|('(?<key1>[^':]+)\s*:\s*(?<value1>[^':]+)')/
56
-
57
- headers.scan(str_scanner) do |header|
58
- header = header.compact!
59
- hash_headers[header[0]] = header[1]&.strip
60
- end
50
+ def self.remove_arg_for(args, arg)
51
+ return args.shift unless args.empty?
52
+ raise StandardError, "Missing argument for #{arg}"
53
+ end
61
54
 
62
- hash_headers
55
+ def self.parse_header(header_arg)
56
+ parts = header_arg.split(':', 2)
57
+ raise StandardError, "#{header_arg} was not a valid header" unless parts.length == 2
58
+ { parts[0].strip => parts[1].strip }
63
59
  end
64
60
  end
65
61
 
@@ -76,10 +72,11 @@ module Cucumber
76
72
  end
77
73
 
78
74
  def close
79
- resource_uri = send_content(@uri, @method, @headers)
80
-
81
- @reporter.report(resource_uri)
75
+ response = send_content(@uri, @method, @headers)
76
+ @reporter.report(response.body)
82
77
  @write_io.close
78
+ return if response.is_a?(Net::HTTPSuccess) || response.is_a?(Net::HTTPRedirection)
79
+ raise StandardError, "request to #{uri} failed with status #{response.code}"
83
80
  end
84
81
 
85
82
  def write(data)
@@ -97,7 +94,7 @@ module Cucumber
97
94
  private
98
95
 
99
96
  def send_content(uri, method, headers, attempt = 10)
100
- content = @write_io
97
+ content = (method == 'GET' ? StringIO.new : @write_io)
101
98
  http = build_client(uri, @https_verify_mode)
102
99
 
103
100
  raise StandardError, "request to #{uri} failed (too many redirections)" if attempt <= 0
@@ -120,13 +117,12 @@ module Cucumber
120
117
  end
121
118
 
122
119
  case response
123
- when Net::HTTPSuccess
124
- uri
120
+ when Net::HTTPAccepted
121
+ send_content(URI(response['Location']), 'PUT', {}, attempt - 1) if response['Location']
125
122
  when Net::HTTPRedirection
126
123
  send_content(URI(response['Location']), method, headers, attempt - 1)
127
- else
128
- raise StandardError, "request to #{uri} failed with status #{response.code}"
129
124
  end
125
+ response
130
126
  end
131
127
 
132
128
  def build_request(uri, method, headers)
@@ -63,10 +63,10 @@ module Cucumber
63
63
  case pipe
64
64
  when :stderr
65
65
  $stderr = new($stderr)
66
- return $stderr
66
+ $stderr
67
67
  when :stdout
68
68
  $stdout = new($stdout)
69
- return $stdout
69
+ $stdout
70
70
  end
71
71
  end
72
72
  end
@@ -9,13 +9,13 @@ module Cucumber
9
9
  module Io
10
10
  module_function
11
11
 
12
- def ensure_io(path_or_url_or_io)
12
+ def ensure_io(path_or_url_or_io, error_stream)
13
13
  return nil if path_or_url_or_io.nil?
14
14
  return path_or_url_or_io if io?(path_or_url_or_io)
15
15
 
16
16
  io = if url?(path_or_url_or_io)
17
17
  url = path_or_url_or_io
18
- reporter = url.start_with?(Cucumber::Cli::Options::CUCUMBER_PUBLISH_URL) ? URLReporter.new($stdout) : NoReporter.new
18
+ reporter = url.start_with?(Cucumber::Cli::Options::CUCUMBER_PUBLISH_URL) ? URLReporter.new(error_stream) : NoReporter.new
19
19
  HTTPIO.open(url, nil, reporter)
20
20
  else
21
21
  File.open(path_or_url_or_io, Cucumber.file_mode('w'))
@@ -64,7 +64,7 @@ module Cucumber
64
64
  raise "You *must* specify --out FILE for the #{name} formatter" unless String == path.class
65
65
  raise "I can't write #{name} to a directory - it has to be a file" if File.directory?(path)
66
66
  raise "I can't write #{name} to a file in the non-existing directory #{File.dirname(path)}" unless File.directory?(File.dirname(path))
67
- ensure_io(path)
67
+ ensure_io(path, nil)
68
68
  end
69
69
 
70
70
  def ensure_dir(path, name)
@@ -19,10 +19,10 @@ module Cucumber
19
19
  '--format=json',
20
20
  "Please use --format=message and stand-alone json-formatter.\n" \
21
21
  'json-formatter homepage: https://github.com/cucumber/cucumber/tree/master/json-formatter#cucumber-json-formatter',
22
- '5.0.0'
22
+ '6.0.0'
23
23
  )
24
24
 
25
- @io = ensure_io(config.out_stream)
25
+ @io = ensure_io(config.out_stream, config.error_stream)
26
26
  @ast_lookup = AstLookup.new(config)
27
27
  @feature_hashes = []
28
28
  @step_or_hook_hash = {}
@@ -106,7 +106,7 @@ module Cucumber
106
106
  write_file(feature_result_filename(feature_data[:uri]), @testsuite.target!)
107
107
  end
108
108
 
109
- def create_output_string(test_case, scenario, result, row_name) # rubocop:disable Metrics/PerceivedComplexity
109
+ def create_output_string(test_case, scenario, result, row_name)
110
110
  scenario_source = @ast_lookup.scenario_source(test_case)
111
111
  keyword = scenario_source.type == :Scenario ? scenario_source.scenario.keyword : scenario_source.scenario_outline.keyword
112
112
  output = "#{keyword}: #{scenario}\n\n"
@@ -10,7 +10,7 @@ module Cucumber
10
10
  include Io
11
11
 
12
12
  def initialize(config)
13
- @io = ensure_io(config.out_stream)
13
+ @io = ensure_io(config.out_stream, config.error_stream)
14
14
  super(config)
15
15
  end
16
16
 
@@ -32,7 +32,7 @@ module Cucumber
32
32
  private :in_scenario_outline, :print_background_steps
33
33
 
34
34
  def initialize(config)
35
- @io = ensure_io(config.out_stream)
35
+ @io = ensure_io(config.out_stream, config.error_stream)
36
36
  @config = config
37
37
  @options = config.to_hash
38
38
  @snippets_input = []
@@ -19,7 +19,7 @@ module Cucumber
19
19
 
20
20
  def initialize(config)
21
21
  @config = config
22
- @io = ensure_io(config.out_stream)
22
+ @io = ensure_io(config.out_stream, config.error_stream)
23
23
  @snippets_input = []
24
24
  @undefined_parameter_types = []
25
25
  @total_duration = 0
@@ -30,7 +30,9 @@ module Cucumber
30
30
  ],
31
31
  [
32
32
  'Environment variable: ',
33
- highlight('CUCUMBER_PUBLISH_ENABLED=true')
33
+ highlight('CUCUMBER_PUBLISH_ENABLED'),
34
+ '=',
35
+ highlight('true')
34
36
  ],
35
37
  [
36
38
  'cucumber.yml: ',
@@ -7,8 +7,8 @@ module Cucumber
7
7
  class Rerun
8
8
  include Formatter::Io
9
9
 
10
- def initialize(config) # rubocop:disable Metrics/PerceivedComplexity
11
- @io = ensure_io(config.out_stream)
10
+ def initialize(config)
11
+ @io = ensure_io(config.out_stream, config.error_stream)
12
12
  @config = config
13
13
  @failures = {}
14
14
  config.on_event :test_case_finished do |event|
@@ -5,7 +5,7 @@ module Cucumber
5
5
  # The formatter used for <tt>--format steps</tt>
6
6
  class Steps
7
7
  def initialize(runtime, path_or_io, options)
8
- @io = ensure_io(path_or_io)
8
+ @io = ensure_io(path_or_io, nil)
9
9
  @options = options
10
10
  @step_definition_files = collect_steps(runtime)
11
11
  end
@@ -16,7 +16,7 @@ module Cucumber
16
16
 
17
17
  def initialize(config)
18
18
  @config = config
19
- @io = ensure_io(config.out_stream)
19
+ @io = ensure_io(config.out_stream, config.error_stream)
20
20
  @ast_lookup = AstLookup.new(config)
21
21
  @counts = ConsoleCounts.new(@config)
22
22
  @issues = ConsoleIssues.new(@config, @ast_lookup)
@@ -1,30 +1,17 @@
1
- require 'cucumber/term/banner'
2
-
3
1
  module Cucumber
4
2
  module Formatter
5
3
  class URLReporter
6
- include Term::Banner
7
-
8
4
  def initialize(io)
9
5
  @io = io
10
6
  end
11
7
 
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
- )
8
+ def report(banner)
9
+ @io.puts(banner)
23
10
  end
24
11
  end
25
12
 
26
13
  class NoReporter
27
- def report(url); end
14
+ def report(banner); end
28
15
  end
29
16
  end
30
17
  end
@@ -137,4 +137,4 @@ module Cucumber
137
137
  end
138
138
 
139
139
  # TODO: can we avoid adding methods to the global namespace (Kernel)
140
- extend(Cucumber::Glue::Dsl) # rubocop:disable Style/MixinUsage
140
+ extend(Cucumber::Glue::Dsl)
@@ -87,7 +87,7 @@ module Cucumber
87
87
  'If you simply want it in the console, '\
88
88
  'keep using "puts" (or Kernel.puts to avoid this message)',
89
89
  'puts(message)',
90
- '5.0.0'
90
+ '6.0.0'
91
91
  )
92
92
  messages.each { |message| log(message.to_s) }
93
93
  end
@@ -102,7 +102,7 @@ module Cucumber
102
102
  Cucumber.deprecate(
103
103
  'Please use attach(file, media_type) instead',
104
104
  'embed(file, mime_type, label)',
105
- '5.0.0'
105
+ '6.0.0'
106
106
  )
107
107
  attach(file, mime_type)
108
108
  end
@@ -143,7 +143,7 @@ module Cucumber
143
143
  end
144
144
 
145
145
  # Dynamially generate the API module, closuring the dependencies
146
- def self.for(runtime, language) # rubocop:disable Metrics/MethodLength
146
+ def self.for(runtime, language) # rubocop:disable Metrics/MethodLength,Metrics/AbcSize
147
147
  Module.new do # rubocop:disable Metrics/BlockLength
148
148
  def self.extended(object)
149
149
  # wrap the dynamically generated module so that we can document the methods
@@ -5,9 +5,7 @@ require 'cucumber/gherkin/formatter/ansi_escapes'
5
5
  begin
6
6
  # Support Rake > 0.8.7
7
7
  require 'rake/dsl_definition'
8
- # rubocop:disable Lint/HandleExceptions
9
8
  rescue LoadError
10
- # rubocop:enable Lint/HandleExceptions
11
9
  end
12
10
 
13
11
  module Cucumber
@@ -4,7 +4,7 @@ module Cucumber
4
4
  module Term
5
5
  module Banner
6
6
  def display_banner(lines, io, border_modifiers = nil)
7
- BannerMaker.new.display_banner(lines, io, border_modifiers || [:cyan])
7
+ BannerMaker.new.display_banner(lines, io, border_modifiers || %i[green bold])
8
8
  end
9
9
 
10
10
  class BannerMaker
@@ -1 +1 @@
1
- 5.0.0
1
+ 5.2.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: 5.0.0
4
+ version: 5.2.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-08-19 00:00:00.000000000 Z
13
+ date: 2020-10-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -61,7 +61,7 @@ dependencies:
61
61
  version: '2.0'
62
62
  - - ">="
63
63
  - !ruby/object:Gem::Version
64
- version: 2.0.1
64
+ version: 2.0.2
65
65
  type: :runtime
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
@@ -71,7 +71,7 @@ dependencies:
71
71
  version: '2.0'
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: 2.0.1
74
+ version: 2.0.2
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: cucumber-cucumber-expressions
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -138,20 +138,20 @@ dependencies:
138
138
  requirements:
139
139
  - - "~>"
140
140
  - !ruby/object:Gem::Version
141
- version: '13.0'
141
+ version: '13.1'
142
142
  - - ">="
143
143
  - !ruby/object:Gem::Version
144
- version: 13.0.1
144
+ version: 13.1.0
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '13.0'
151
+ version: '13.1'
152
152
  - - ">="
153
153
  - !ruby/object:Gem::Version
154
- version: 13.0.1
154
+ version: 13.1.0
155
155
  - !ruby/object:Gem::Dependency
156
156
  name: cucumber-wire
157
157
  requirement: !ruby/object:Gem::Requirement
@@ -381,7 +381,7 @@ dependencies:
381
381
  version: '1.6'
382
382
  - - ">="
383
383
  - !ruby/object:Gem::Version
384
- version: 1.6.0
384
+ version: 1.6.1
385
385
  type: :development
386
386
  prerelease: false
387
387
  version_requirements: !ruby/object:Gem::Requirement
@@ -391,27 +391,27 @@ dependencies:
391
391
  version: '1.6'
392
392
  - - ">="
393
393
  - !ruby/object:Gem::Version
394
- version: 1.6.0
394
+ version: 1.6.1
395
395
  - !ruby/object:Gem::Dependency
396
396
  name: octokit
397
397
  requirement: !ruby/object:Gem::Requirement
398
398
  requirements:
399
399
  - - "~>"
400
400
  - !ruby/object:Gem::Version
401
- version: '4.18'
401
+ version: '4.19'
402
402
  - - ">="
403
403
  - !ruby/object:Gem::Version
404
- version: 4.18.0
404
+ version: 4.19.0
405
405
  type: :development
406
406
  prerelease: false
407
407
  version_requirements: !ruby/object:Gem::Requirement
408
408
  requirements:
409
409
  - - "~>"
410
410
  - !ruby/object:Gem::Version
411
- version: '4.18'
411
+ version: '4.19'
412
412
  - - ">="
413
413
  - !ruby/object:Gem::Version
414
- version: 4.18.0
414
+ version: 4.19.0
415
415
  - !ruby/object:Gem::Dependency
416
416
  name: rack-test
417
417
  requirement: !ruby/object:Gem::Requirement
@@ -438,20 +438,20 @@ dependencies:
438
438
  requirements:
439
439
  - - "~>"
440
440
  - !ruby/object:Gem::Version
441
- version: '2.0'
441
+ version: '2.1'
442
442
  - - ">="
443
443
  - !ruby/object:Gem::Version
444
- version: 2.0.8.1
444
+ version: 2.1.0
445
445
  type: :development
446
446
  prerelease: false
447
447
  version_requirements: !ruby/object:Gem::Requirement
448
448
  requirements:
449
449
  - - "~>"
450
450
  - !ruby/object:Gem::Version
451
- version: '2.0'
451
+ version: '2.1'
452
452
  - - ">="
453
453
  - !ruby/object:Gem::Version
454
- version: 2.0.8.1
454
+ version: 2.1.0
455
455
  - !ruby/object:Gem::Dependency
456
456
  name: capybara
457
457
  requirement: !ruby/object:Gem::Requirement
@@ -642,5 +642,5 @@ requirements: []
642
642
  rubygems_version: 3.1.2
643
643
  signing_key:
644
644
  specification_version: 4
645
- summary: cucumber-5.0.0
645
+ summary: cucumber-5.2.0
646
646
  test_files: []