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

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: 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: []