cucumber 4.0.0.rc.5 → 4.0.0.rc.6

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: 388c05be14607a5aaa4acaef66d2bb5f6dab1258bc3e785e71a077fae3d366a7
4
- data.tar.gz: 2546749fa602b12b756e0dee45ff756fc89507329504b94f633b39cd5692464e
3
+ metadata.gz: cf81b80049480e75914eab234ad671608f10a474e8850ecbda9e3cdca96f9e4e
4
+ data.tar.gz: 4a692380408f3bd93ff079e192391bc921967ce96bf090f7cf010269c806a6a5
5
5
  SHA512:
6
- metadata.gz: ed762cc475552e7698cf9ebae51b00366f88f000fcbbbd9697bfa1056a2ec7a7a9d49bb946e0f785d8c1d435da443bd2cca834a2309a11403836dc11f93de169
7
- data.tar.gz: 112fb462eb9a3bdb1056c3ad32670ad1160ad0f40a6b804bc09b5e948443073df55a8b6c2818c0cb8f7794623b8e71f04d913a1559bb0b69536cc7bf7634873c
6
+ metadata.gz: 3b1a3f2fcb5db9237bef23b510cadf0286ea61b19adab4fbcc67f4df14ded7adf2c33d2e4165f45be7361dce6fb418f74deadf3e0e1a7d4e8f2ba23c0e8a6c62
7
+ data.tar.gz: 79d699ae305489e034fb16edf31d36304c2a0fb486bff4003f8e24abd786d81510eab5fdca6d32ca3348ce24b634cc6954d800b03494e3ef1dbba57ab7b9cc78
@@ -9,6 +9,33 @@ This document is formatted according to the principles of [Keep A CHANGELOG](htt
9
9
  Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blob/master/CONTRIBUTING.md) for more info on how to contribute to Cucumber.
10
10
 
11
11
  ----
12
+ ## [4.0.0.rc.6](https://github.com/cucumber/cucumber-ruby/compare/v4.0.0.rc.5...4.0.0.rc.6)
13
+
14
+ ### Changed
15
+
16
+ * Code snippet for an undefined step with a Doc String will ouput `doc_string` instead of `string` in block params
17
+ ([#1401](https://github.com/cucumber/cucumber-ruby/issues/1401)
18
+ [#1402](https://github.com/cucumber/cucumber-ruby/pull/1402)
19
+ [karamosky](https://github.com/karamosky))
20
+
21
+ * Updated monorepo libraries:
22
+ - cucumber-gherkin ~> 13
23
+ - cucumber-html-formatter ~> 6
24
+ - cucumber-cucumber-expressions ~> 10
25
+
26
+ * Use `cucumber-ruby-core` 7.0.0
27
+
28
+ * Use `cucumber-ruby-wire` 3.0.0
29
+
30
+ * Use `body` field of attachments
31
+
32
+ ### Improved
33
+
34
+ * `--out url` updates:
35
+ * supports redirects
36
+ * use `PUT` method by default
37
+ * use a cURL like options (for example: `cucumber --out 'http://example.com -X POST -H Content-Type: json`)
38
+
12
39
  ## [4.0.0.rc.5](https://github.com/cucumber/cucumber-ruby/compare/v4.0.0.rc.4...4.0.0.rc.5)
13
40
 
14
41
  ### Added
@@ -1,4 +1,5 @@
1
1
  require 'net/http'
2
+ require 'tempfile'
2
3
 
3
4
  module Cucumber
4
5
  module Formatter
@@ -7,86 +8,138 @@ module Cucumber
7
8
  # Returns an IO that will write to a HTTP request's body
8
9
  def open(url, https_verify_mode = nil)
9
10
  @https_verify_mode = https_verify_mode
10
- uri, method, headers = build_uri_method_headers(url)
11
-
12
- @req = build_request(uri, method, headers)
13
- @http = build_client(uri, https_verify_mode)
14
-
15
- read_io, write_io = IO.pipe
16
- @req.body_stream = read_io
17
-
18
- class << write_io
19
- attr_writer :request_thread
20
-
21
- def start_request(http, req)
22
- @req_thread = Thread.new do
23
- begin
24
- res = http.request(req)
25
- raise StandardError, "request to #{req.uri} failed with status #{res.code}" if res.code.to_i >= 400
26
- rescue StandardError => e
27
- @http_error = e
28
- end
29
- end
30
- end
31
-
32
- def close
33
- super
34
- begin
35
- @req_thread.join
36
- rescue StandardError
37
- nil
38
- end
39
- raise @http_error unless @http_error.nil?
40
- end
11
+ uri, method, headers = CurlOptionParser.parse(url)
12
+ IOHTTPBuffer.new(uri, method, headers, https_verify_mode)
13
+ end
14
+ end
15
+ end
16
+
17
+ class CurlOptionParser
18
+ def self.parse(options)
19
+ chunks = options.split(/\s/).compact
20
+ http_method = 'PUT'
21
+ url = chunks[0]
22
+ headers = ''
23
+
24
+ last_flag = nil
25
+ chunks.each do |chunk|
26
+ if ['-X', '--request'].include?(chunk)
27
+ last_flag = '-X'
28
+ next
41
29
  end
42
- write_io.start_request(@http, @req)
43
30
 
44
- write_io
31
+ if chunk == '-H'
32
+ last_flag = '-H'
33
+ next
34
+ end
35
+
36
+ if last_flag == '-X'
37
+ http_method = chunk
38
+ last_flag = nil
39
+ end
40
+
41
+ headers += chunk if last_flag == '-H'
45
42
  end
46
43
 
47
- def build_uri_method_headers(url)
48
- uri = URI(url)
49
- query_pairs = uri.query ? URI.decode_www_form(uri.query) : []
50
-
51
- # Build headers from query parameters prefixed with http- and extract HTTP method
52
- http_query_pairs = query_pairs.select { |pair| pair[0] =~ /^http-/ }
53
- http_query_hash_without_prefix = Hash[http_query_pairs.map do |pair|
54
- [
55
- pair[0][5..-1].downcase, # remove http- prefix
56
- pair[1]
57
- ]
58
- end]
59
- method = http_query_hash_without_prefix.delete('method') || 'POST'
60
- headers = {
61
- 'transfer-encoding' => 'chunked'
62
- }.merge(http_query_hash_without_prefix)
63
-
64
- # Update the query with the http-* parameters removed
65
- remaining_query_pairs = query_pairs - http_query_pairs
66
- new_query_hash = Hash[remaining_query_pairs]
67
- uri.query = URI.encode_www_form(new_query_hash) unless new_query_hash.empty?
68
- [uri, method, headers]
44
+ [
45
+ url,
46
+ http_method,
47
+ make_headers(headers)
48
+ ]
49
+ end
50
+
51
+ def self.make_headers(headers)
52
+ hash_headers = {}
53
+ str_scanner = /("(?<key>[^":]+)\s*:\s*(?<value>[^":]+)")|('(?<key1>[^':]+)\s*:\s*(?<value1>[^':]+)')/
54
+
55
+ headers.scan(str_scanner) do |header|
56
+ header = header.compact!
57
+ hash_headers[header[0]] = header[1]&.strip
69
58
  end
70
59
 
71
- private
60
+ hash_headers
61
+ end
62
+ end
72
63
 
73
- def build_request(uri, method, headers)
74
- method_class_name = "#{method[0].upcase}#{method[1..-1].downcase}"
75
- req = Net::HTTP.const_get(method_class_name).new(uri)
76
- headers.each do |header, value|
77
- req[header] = value
78
- end
79
- req
64
+ class IOHTTPBuffer
65
+ attr_reader :uri, :method, :headers
66
+
67
+ def initialize(uri, method, headers = {}, https_verify_mode = nil)
68
+ @uri = URI(uri)
69
+ @method = method
70
+ @headers = headers
71
+ @write_io = Tempfile.new('cucumber', encoding: 'UTF-8')
72
+ @https_verify_mode = https_verify_mode
73
+ end
74
+
75
+ def close
76
+ post_content(@uri, @method, @headers)
77
+ @write_io.close
78
+ end
79
+
80
+ def write(data)
81
+ @write_io.write(data)
82
+ end
83
+
84
+ def flush
85
+ @write_io.flush
86
+ end
87
+
88
+ def closed?
89
+ @write_io.closed?
90
+ end
91
+
92
+ private
93
+
94
+ def post_content(uri, method, headers, attempt = 10)
95
+ content = @write_io
96
+ http = build_client(uri, @https_verify_mode)
97
+
98
+ raise StandardError, "request to #{uri} failed (too many redirections)" if attempt <= 0
99
+ req = build_request(
100
+ uri,
101
+ method,
102
+ headers.merge(
103
+ 'Content-Length' => content.size.to_s
104
+ )
105
+ )
106
+
107
+ content.rewind
108
+ req.body_stream = content
109
+
110
+ begin
111
+ response = http.request(req)
112
+ rescue SystemCallError
113
+ # We may get the redirect response before pushing the file.
114
+ response = http.request(build_request(uri, method, headers))
80
115
  end
81
116
 
82
- def build_client(uri, https_verify_mode)
83
- http = Net::HTTP.new(uri.hostname, uri.port)
84
- if uri.scheme == 'https'
85
- http.use_ssl = true
86
- http.verify_mode = https_verify_mode if https_verify_mode
87
- end
88
- http
117
+ case response
118
+ when Net::HTTPSuccess
119
+ response
120
+ when Net::HTTPRedirection
121
+ post_content(URI(response['Location']), method, headers, attempt - 1)
122
+ else
123
+ raise StandardError, "request to #{uri} failed with status #{response.code}"
124
+ end
125
+ end
126
+
127
+ def build_request(uri, method, headers)
128
+ method_class_name = "#{method[0].upcase}#{method[1..-1].downcase}"
129
+ req = Net::HTTP.const_get(method_class_name).new(uri)
130
+ headers.each do |header, value|
131
+ req[header] = value
132
+ end
133
+ req
134
+ end
135
+
136
+ def build_client(uri, https_verify_mode)
137
+ http = Net::HTTP.new(uri.hostname, uri.port)
138
+ if uri.scheme == 'https'
139
+ http.use_ssl = true
140
+ http.verify_mode = https_verify_mode if https_verify_mode
89
141
  end
142
+ http
90
143
  end
91
144
  end
92
145
  end
@@ -9,17 +9,18 @@ module Cucumber
9
9
  @pipe = pipe
10
10
  @buffer = StringIO.new
11
11
  @wrapped = true
12
+ @lock = Mutex.new
12
13
  end
13
14
 
14
15
  def write(str)
15
- lock.synchronize do
16
+ @lock.synchronize do
16
17
  @buffer << str if @wrapped
17
18
  return @pipe.write(str)
18
19
  end
19
20
  end
20
21
 
21
22
  def buffer_string
22
- lock.synchronize do
23
+ @lock.synchronize do
23
24
  return @buffer.string.dup
24
25
  end
25
26
  end
@@ -67,12 +68,6 @@ module Cucumber
67
68
  return $stdout
68
69
  end
69
70
  end
70
-
71
- private
72
-
73
- def lock
74
- @lock ||= Mutex.new
75
- end
76
71
  end
77
72
  end
78
73
  end
@@ -47,11 +47,13 @@ module Cucumber
47
47
  }
48
48
 
49
49
  if media_type.start_with?('text/')
50
- attachment_data[:text] = src
51
- elsif src.respond_to? :read
52
- attachment_data[:binary] = Base64.encode64(src.read)
50
+ attachment_data[:content_encoding] = Cucumber::Messages::Attachment::ContentEncoding::IDENTITY
51
+ attachment_data[:body] = src
53
52
  else
54
- attachment_data[:binary] = Base64.encode64(src)
53
+ body = src.respond_to?(:read) ? src.read : src
54
+
55
+ attachment_data[:content_encoding] = Cucumber::Messages::Attachment::ContentEncoding::BASE64
56
+ attachment_data[:body] = Base64.strict_encode64(body)
55
57
  end
56
58
 
57
59
  message = Cucumber::Messages::Envelope.new(
@@ -124,7 +126,7 @@ module Cucumber
124
126
 
125
127
  def step_match_arguments(step)
126
128
  @step_definitions_by_test_step.step_match_arguments(step).map do |argument|
127
- Cucumber::Messages::StepMatchArgument.new(
129
+ Cucumber::Messages::TestCase::TestStep::StepMatchArgumentsList::StepMatchArgument.new(
128
130
  group: argument_group_to_message(argument.group),
129
131
  parameter_type_name: argument.parameter_type.name
130
132
  )
@@ -132,7 +134,7 @@ module Cucumber
132
134
  end
133
135
 
134
136
  def argument_group_to_message(group)
135
- Cucumber::Messages::StepMatchArgument::Group.new(
137
+ Cucumber::Messages::TestCase::TestStep::StepMatchArgumentsList::StepMatchArgument::Group.new(
136
138
  start: group.start,
137
139
  value: group.value,
138
140
  children: group.children.map { |child| argument_group_to_message(child) }
@@ -187,7 +189,7 @@ module Cucumber
187
189
 
188
190
  result_message = result.to_message
189
191
  if result.failed? || result.pending?
190
- result_message = Cucumber::Messages::TestStepResult.new(
192
+ result_message = Cucumber::Messages::TestStepFinished::TestStepResult.new(
191
193
  status: result_message.status,
192
194
  duration: result_message.duration,
193
195
  message: create_error_message(result)
@@ -192,6 +192,7 @@ module Cucumber
192
192
 
193
193
  Cucumber::Messages::Envelope.new(
194
194
  parameter_type: Cucumber::Messages::ParameterType.new(
195
+ id: @configuration.id_generator.new_id,
195
196
  name: parameter_type.name,
196
197
  regular_expressions: parameter_type.regexps.map(&:to_s),
197
198
  prefer_for_regular_expression_match: parameter_type.prefer_for_regexp_match?,
@@ -174,7 +174,7 @@ module Cucumber
174
174
 
175
175
  class DocString
176
176
  def append_block_parameter_to(array)
177
- array << 'string'
177
+ array << 'doc_string'
178
178
  end
179
179
 
180
180
  def append_comment_to(string); end
@@ -77,7 +77,7 @@ module Cucumber
77
77
  Cucumber::Messages::Envelope.new(
78
78
  step_definition: Cucumber::Messages::StepDefinition.new(
79
79
  id: id,
80
- pattern: Cucumber::Messages::StepDefinitionPattern.new(
80
+ pattern: Cucumber::Messages::StepDefinition::StepDefinitionPattern.new(
81
81
  source: expression.source.to_s,
82
82
  type: expression_type
83
83
  ),
@@ -92,8 +92,8 @@ module Cucumber
92
92
  end
93
93
 
94
94
  def expression_type
95
- return Cucumber::Messages::StepDefinitionPatternType::CUCUMBER_EXPRESSION if expression.is_a?(CucumberExpressions::CucumberExpression)
96
- Cucumber::Messages::StepDefinitionPatternType::REGULAR_EXPRESSION
95
+ return Cucumber::Messages::StepDefinition::StepDefinitionPattern::StepDefinitionPatternType::CUCUMBER_EXPRESSION if expression.is_a?(CucumberExpressions::CucumberExpression)
96
+ Cucumber::Messages::StepDefinition::StepDefinitionPattern::StepDefinitionPatternType::REGULAR_EXPRESSION
97
97
  end
98
98
 
99
99
  # @api private
@@ -7,7 +7,7 @@ require 'cucumber/core/platform'
7
7
 
8
8
  module Cucumber
9
9
  unless defined?(Cucumber::VERSION)
10
- VERSION = File.read(File.expand_path('version', __dir__))
10
+ VERSION = File.read(File.expand_path('version', __dir__)).strip
11
11
  BINARY = File.expand_path(File.dirname(__FILE__) + '/../../bin/cucumber')
12
12
  LIBDIR = File.expand_path(File.dirname(__FILE__) + '/../../lib')
13
13
  RAILS = defined?(Rails)
@@ -9,6 +9,8 @@ require 'cucumber/filters'
9
9
  require 'cucumber/formatter/fanout'
10
10
  require 'cucumber/gherkin/i18n'
11
11
  require 'cucumber/step_match_search'
12
+ require 'cucumber/messages'
13
+ require 'sys/uname'
12
14
 
13
15
  module Cucumber
14
16
  module FixRuby21Bug9285
@@ -62,6 +64,10 @@ module Cucumber
62
64
 
63
65
  require 'cucumber/wire/plugin'
64
66
  def run!
67
+ @configuration.notify :envelope, Cucumber::Messages::Envelope.new(
68
+ meta: make_meta
69
+ )
70
+
65
71
  load_step_definitions
66
72
  install_wire_plugin
67
73
  fire_after_configuration_hook
@@ -99,6 +105,27 @@ module Cucumber
99
105
  Core::Test::DocString.new(string_without_triple_quotes, content_type)
100
106
  end
101
107
 
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
+
102
129
  private
103
130
 
104
131
  def fire_after_configuration_hook #:nodoc:
@@ -1 +1 @@
1
- 4.0.0.rc.5
1
+ 4.0.0.rc.6
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.0.0.rc.5
4
+ version: 4.0.0.rc.6
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-03-17 00:00:00.000000000 Z
13
+ date: 2020-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: builder
@@ -38,100 +38,120 @@ dependencies:
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 6.0.0
41
+ version: 7.0.0
42
42
  - - "~>"
43
43
  - !ruby/object:Gem::Version
44
- version: '6.0'
44
+ version: '7.0'
45
45
  type: :runtime
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
48
48
  requirements:
49
49
  - - ">="
50
50
  - !ruby/object:Gem::Version
51
- version: 6.0.0
51
+ version: 7.0.0
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: '7.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: cucumber-expressions
56
+ name: cucumber-cucumber-expressions
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '8.0'
62
59
  - - ">="
63
60
  - !ruby/object:Gem::Version
64
- version: 8.0.2
61
+ version: 10.1.0
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: '10.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: '8.0'
72
69
  - - ">="
73
70
  - !ruby/object:Gem::Version
74
- version: 8.0.2
71
+ version: 10.1.0
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '10.1'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: cucumber-gherkin
77
77
  requirement: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: 10.0.0
81
+ version: 13.0.0
82
82
  - - "~>"
83
83
  - !ruby/object:Gem::Version
84
- version: '10.0'
84
+ version: '13.0'
85
85
  type: :runtime
86
86
  prerelease: false
87
87
  version_requirements: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
90
90
  - !ruby/object:Gem::Version
91
- version: 10.0.0
91
+ version: 13.0.0
92
92
  - - "~>"
93
93
  - !ruby/object:Gem::Version
94
- version: '10.0'
94
+ version: '13.0'
95
95
  - !ruby/object:Gem::Dependency
96
96
  name: cucumber-html-formatter
97
97
  requirement: !ruby/object:Gem::Requirement
98
98
  requirements:
99
- - - ">="
100
- - !ruby/object:Gem::Version
101
- version: 4.3.0
102
99
  - - "~>"
103
100
  - !ruby/object:Gem::Version
104
- version: '4.3'
101
+ version: '6.0'
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 6.0.1
105
105
  type: :runtime
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '6.0'
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ version: 6.0.1
115
+ - !ruby/object:Gem::Dependency
116
+ name: cucumber-messages
117
+ requirement: !ruby/object:Gem::Requirement
118
+ requirements:
119
+ - - "~>"
120
+ - !ruby/object:Gem::Version
121
+ version: '12.1'
109
122
  - - ">="
110
123
  - !ruby/object:Gem::Version
111
- version: 4.3.0
124
+ version: 12.1.1
125
+ type: :runtime
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
112
129
  - - "~>"
113
130
  - !ruby/object:Gem::Version
114
- version: '4.3'
131
+ version: '12.1'
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: 12.1.1
115
135
  - !ruby/object:Gem::Dependency
116
136
  name: cucumber-wire
117
137
  requirement: !ruby/object:Gem::Requirement
118
138
  requirements:
119
139
  - - ">="
120
140
  - !ruby/object:Gem::Version
121
- version: 2.0.0
141
+ version: 3.0.0
122
142
  - - "~>"
123
143
  - !ruby/object:Gem::Version
124
- version: '2.0'
144
+ version: '3.0'
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: 2.0.0
151
+ version: 3.0.0
132
152
  - - "~>"
133
153
  - !ruby/object:Gem::Version
134
- version: '2.0'
154
+ version: '3.0'
135
155
  - !ruby/object:Gem::Dependency
136
156
  name: diff-lcs
137
157
  requirement: !ruby/object:Gem::Requirement
@@ -172,6 +192,26 @@ dependencies:
172
192
  - - ">="
173
193
  - !ruby/object:Gem::Version
174
194
  version: 0.1.2
195
+ - !ruby/object:Gem::Dependency
196
+ name: sys-uname
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "~>"
200
+ - !ruby/object:Gem::Version
201
+ version: '1.0'
202
+ - - ">="
203
+ - !ruby/object:Gem::Version
204
+ version: 1.0.2
205
+ type: :runtime
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: '1.0'
212
+ - - ">="
213
+ - !ruby/object:Gem::Version
214
+ version: 1.0.2
175
215
  - !ruby/object:Gem::Dependency
176
216
  name: aruba
177
217
  requirement: !ruby/object:Gem::Requirement
@@ -592,5 +632,5 @@ requirements: []
592
632
  rubygems_version: 3.0.6
593
633
  signing_key:
594
634
  specification_version: 4
595
- summary: cucumber-4.0.0.rc.5
635
+ summary: cucumber-4.0.0.rc.6
596
636
  test_files: []