cucumber-messages 7.0.0 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b23fece0238b475825c64084e226cd1556f35a1c7f4cfe8e2c98a9150a0281c8
4
- data.tar.gz: eb8d6f52ea333f8bd0b0e66cc8e8bce30fc97d7a99e549937dca6bdb0bc42e88
3
+ metadata.gz: 9a30233674057da24fc9163c1cf3b5fb01d4b419b1f51a2f8b40355a3f48e604
4
+ data.tar.gz: da293cb418e9faa3749e2818488588fad8f389816b84cbb20670cf5ff4ebcf9a
5
5
  SHA512:
6
- metadata.gz: a6abde70c686a2b94149d81de1188cdd2c0a127857ed465fd690ec28534004397a32b9325425b5ea573ddff6448165d8e10610917a032cdded578f22b06c1b0b
7
- data.tar.gz: 6cb8bb9c25a991f823b63510594e296c43130a626dc84cd5a4b80a4467cd2e863468067b7ed39193ad3c505eea43958e916e0ab2b60fbad8a2365bf13604adeb
6
+ metadata.gz: 78f1607fbe53e322ca22f055b63751927ee212950e2e6e421afd17bd92254d1ff03fba139668a59bd27e452c0fa6136a00790a33a247fd3d8acc5c35433f87c2
7
+ data.tar.gz: b8008401ca5cd17a07ea5646e008bb999823f4cddf536824afd60892979ec6ef53197fac499d2cde3d055a14515fb8ecc5679f198ad5784a52e9930b3e1d34c4
@@ -1,6 +1,11 @@
1
1
  require 'cucumber/messages_pb'
2
- require 'cucumber/messages/protobuf_io_enumerator'
2
+ require 'cucumber/messages/binary_to_message_enumerator'
3
+ require 'cucumber/messages/ndjson_to_message_enumerator'
3
4
  require 'cucumber/messages/protobuf_delimited'
5
+ require 'cucumber/messages/protobuf_ndjson'
6
+ require 'cucumber/messages/time_conversion'
7
+ require 'cucumber/messages/id_generator'
4
8
 
9
+ Cucumber::Messages::Envelope.include(Cucumber::Messages::WriteNdjson)
5
10
  Cucumber::Messages::Envelope.include(Cucumber::Messages::WriteDelimited)
6
11
  Cucumber::Messages::Envelope.extend(Cucumber::Messages::ParseDelimited)
@@ -2,9 +2,9 @@ require 'cucumber/messages/varint'
2
2
 
3
3
  module Cucumber
4
4
  module Messages
5
- module ProtobufIoEnumerator
6
- def self.call(io)
7
- Enumerator.new do |yielder|
5
+ class BinaryToMessageEnumerator < Enumerator
6
+ def initialize(io)
7
+ super() do |yielder|
8
8
  while !io.eof?
9
9
  yielder.yield(Cucumber::Messages::Envelope.parse_delimited_from(io))
10
10
  end
@@ -12,4 +12,4 @@ module Cucumber
12
12
  end
13
13
  end
14
14
  end
15
- end
15
+ end
@@ -0,0 +1,24 @@
1
+ require 'securerandom'
2
+
3
+ module Cucumber
4
+ module Messages
5
+ module IdGenerator
6
+ class Incrementing
7
+ def initialize
8
+ @index = -1
9
+ end
10
+
11
+ def new_id
12
+ @index += 1
13
+ @index.to_s
14
+ end
15
+ end
16
+
17
+ class UUID
18
+ def new_id
19
+ SecureRandom.uuid
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,15 @@
1
+ require 'cucumber/messages/varint'
2
+
3
+ module Cucumber
4
+ module Messages
5
+ class NdjsonToMessageEnumerator < Enumerator
6
+ def initialize(io)
7
+ super() do |yielder|
8
+ io.each_line do |json|
9
+ yielder.yield(Cucumber::Messages::Envelope.decode_json(json))
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,30 @@
1
+ require 'json'
2
+
3
+ module Cucumber
4
+ module Messages
5
+ module WriteNdjson
6
+ def write_ndjson_to(io)
7
+ json = self.class.encode_json(self)
8
+ ob = JSON.parse(json)
9
+ remove_empties(ob)
10
+ io.puts(JSON.generate(ob))
11
+ end
12
+
13
+ def remove_empties(ob)
14
+ if Hash === ob
15
+ ob.each do |key, value|
16
+ if value == []
17
+ ob.delete(key)
18
+ else
19
+ remove_empties(value)
20
+ end
21
+ end
22
+ elsif Array === ob
23
+ ob.each do |value|
24
+ remove_empties(value)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ module Cucumber
2
+ module Messages
3
+ module TimeConversion
4
+ NANOSECONDS_PER_SECOND = 1000000000
5
+
6
+ def time_to_timestamp(time)
7
+ rational = time.to_r
8
+ Timestamp.new(seconds: rational.numerator, nanos: rational.denominator)
9
+ end
10
+
11
+ def timestamp_to_time(timestamp)
12
+ Time.at(Rational(timestamp.seconds, timestamp.nanos))
13
+ end
14
+
15
+ def seconds_to_duration(seconds_float)
16
+ seconds, second_modulus = seconds_float.divmod(1)
17
+ nanos = second_modulus / NANOSECONDS_PER_SECOND
18
+ Duration.new(seconds: seconds, nanos: nanos)
19
+ end
20
+
21
+ def duration_to_seconds(duration)
22
+ seconds_part = duration.seconds
23
+ nanos_part = duration.nanos / NANOSECONDS_PER_SECOND
24
+ seconds_part + nanos_part
25
+ end
26
+ end
27
+ end
28
+ end
@@ -15,31 +15,31 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
15
15
  add_message "io.cucumber.messages.Envelope" do
16
16
  oneof :message do
17
17
  optional :source, :message, 1, "io.cucumber.messages.Source"
18
- optional :gherkinDocument, :message, 2, "io.cucumber.messages.GherkinDocument"
18
+ optional :gherkin_document, :message, 2, "io.cucumber.messages.GherkinDocument"
19
19
  optional :pickle, :message, 3, "io.cucumber.messages.Pickle"
20
20
  optional :attachment, :message, 4, "io.cucumber.messages.Attachment"
21
- optional :testCaseStarted, :message, 5, "io.cucumber.messages.TestCaseStarted"
22
- optional :testStepStarted, :message, 6, "io.cucumber.messages.TestStepStarted"
23
- optional :testStepFinished, :message, 7, "io.cucumber.messages.TestStepFinished"
24
- optional :testCaseFinished, :message, 8, "io.cucumber.messages.TestCaseFinished"
25
- optional :pickleAccepted, :message, 9, "io.cucumber.messages.PickleAccepted"
26
- optional :pickleRejected, :message, 10, "io.cucumber.messages.PickleRejected"
27
- optional :testCasePrepared, :message, 11, "io.cucumber.messages.TestCasePrepared"
28
- optional :testRunStarted, :message, 12, "io.cucumber.messages.TestRunStarted"
29
- optional :testRunFinished, :message, 13, "io.cucumber.messages.TestRunFinished"
30
- optional :commandStart, :message, 14, "io.cucumber.messages.CommandStart"
31
- optional :commandActionComplete, :message, 15, "io.cucumber.messages.CommandActionComplete"
32
- optional :commandRunBeforeTestRunHooks, :message, 16, "io.cucumber.messages.CommandRunBeforeTestRunHooks"
33
- optional :commandInitializeTestCase, :message, 17, "io.cucumber.messages.CommandInitializeTestCase"
34
- optional :commandRunBeforeTestCaseHook, :message, 18, "io.cucumber.messages.CommandRunBeforeTestCaseHook"
35
- optional :commandRunTestStep, :message, 19, "io.cucumber.messages.CommandRunTestStep"
36
- optional :commandRunAfterTestCaseHook, :message, 20, "io.cucumber.messages.CommandRunAfterTestCaseHook"
37
- optional :commandRunAfterTestRunHooks, :message, 21, "io.cucumber.messages.CommandRunAfterTestRunHooks"
38
- optional :commandGenerateSnippet, :message, 22, "io.cucumber.messages.CommandGenerateSnippet"
39
- optional :commandError, :string, 23
40
- optional :testCase, :message, 24, "io.cucumber.messages.TestCase"
41
- optional :stepDefinitionConfig, :message, 25, "io.cucumber.messages.StepDefinitionConfig"
42
- optional :testCaseHookDefinitionConfig, :message, 26, "io.cucumber.messages.TestCaseHookDefinitionConfig"
21
+ optional :test_case_started, :message, 5, "io.cucumber.messages.TestCaseStarted"
22
+ optional :test_step_started, :message, 6, "io.cucumber.messages.TestStepStarted"
23
+ optional :test_step_finished, :message, 7, "io.cucumber.messages.TestStepFinished"
24
+ optional :test_case_finished, :message, 8, "io.cucumber.messages.TestCaseFinished"
25
+ optional :pickle_accepted, :message, 9, "io.cucumber.messages.PickleAccepted"
26
+ optional :pickle_rejected, :message, 10, "io.cucumber.messages.PickleRejected"
27
+ optional :test_case_prepared, :message, 11, "io.cucumber.messages.TestCasePrepared"
28
+ optional :test_run_started, :message, 12, "io.cucumber.messages.TestRunStarted"
29
+ optional :test_run_finished, :message, 13, "io.cucumber.messages.TestRunFinished"
30
+ optional :command_start, :message, 14, "io.cucumber.messages.CommandStart"
31
+ optional :command_action_complete, :message, 15, "io.cucumber.messages.CommandActionComplete"
32
+ optional :command_run_before_test_run_hooks, :message, 16, "io.cucumber.messages.CommandRunBeforeTestRunHooks"
33
+ optional :command_initialize_test_case, :message, 17, "io.cucumber.messages.CommandInitializeTestCase"
34
+ optional :command_run_before_test_case_hook, :message, 18, "io.cucumber.messages.CommandRunBeforeTestCaseHook"
35
+ optional :command_run_test_step, :message, 19, "io.cucumber.messages.CommandRunTestStep"
36
+ optional :command_run_after_test_case_hook, :message, 20, "io.cucumber.messages.CommandRunAfterTestCaseHook"
37
+ optional :command_run_after_test_run_hooks, :message, 21, "io.cucumber.messages.CommandRunAfterTestRunHooks"
38
+ optional :command_generate_snippet, :message, 22, "io.cucumber.messages.CommandGenerateSnippet"
39
+ optional :command_error, :string, 23
40
+ optional :test_case, :message, 24, "io.cucumber.messages.TestCase"
41
+ optional :step_definition, :message, 25, "io.cucumber.messages.StepDefinition"
42
+ optional :hook, :message, 26, "io.cucumber.messages.Hook"
43
43
  end
44
44
  end
45
45
  add_message "io.cucumber.messages.Location" do
@@ -165,6 +165,8 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
165
165
  optional :source, :message, 1, "io.cucumber.messages.SourceReference"
166
166
  optional :data, :string, 2
167
167
  optional :media, :message, 3, "io.cucumber.messages.Media"
168
+ optional :test_step_id, :string, 4
169
+ optional :test_case_started_id, :string, 5
168
170
  end
169
171
  add_message "io.cucumber.messages.Pickle" do
170
172
  optional :id, :string, 1
@@ -173,17 +175,17 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
173
175
  optional :language, :string, 4
174
176
  repeated :steps, :message, 5, "io.cucumber.messages.Pickle.PickleStep"
175
177
  repeated :tags, :message, 6, "io.cucumber.messages.Pickle.PickleTag"
176
- repeated :sourceIds, :string, 7
178
+ repeated :ast_node_ids, :string, 7
177
179
  end
178
180
  add_message "io.cucumber.messages.Pickle.PickleTag" do
179
181
  optional :name, :string, 1
180
- optional :sourceId, :string, 2
182
+ optional :ast_node_id, :string, 2
181
183
  end
182
184
  add_message "io.cucumber.messages.Pickle.PickleStep" do
183
185
  optional :text, :string, 1
184
186
  optional :argument, :message, 2, "io.cucumber.messages.PickleStepArgument"
185
187
  optional :id, :string, 3
186
- repeated :sourceIds, :string, 4
188
+ repeated :ast_node_ids, :string, 4
187
189
  end
188
190
  add_message "io.cucumber.messages.PickleStepArgument" do
189
191
  oneof :message do
@@ -192,7 +194,7 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
192
194
  end
193
195
  end
194
196
  add_message "io.cucumber.messages.PickleStepArgument.PickleDocString" do
195
- optional :contentType, :string, 1
197
+ optional :content_type, :string, 1
196
198
  optional :content, :string, 2
197
199
  end
198
200
  add_message "io.cucumber.messages.PickleStepArgument.PickleTable" do
@@ -206,38 +208,38 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
206
208
  end
207
209
  add_message "io.cucumber.messages.TestCase" do
208
210
  optional :id, :string, 1
209
- optional :pickleId, :string, 2
210
- repeated :testSteps, :message, 3, "io.cucumber.messages.TestCase.TestStep"
211
+ optional :pickle_id, :string, 2
212
+ repeated :test_steps, :message, 3, "io.cucumber.messages.TestCase.TestStep"
211
213
  end
212
214
  add_message "io.cucumber.messages.TestCase.TestStep" do
213
215
  optional :id, :string, 1
214
- optional :pickleStepId, :string, 2
215
- repeated :stepDefinitionId, :string, 3
216
- repeated :stepMatchArguments, :message, 4, "io.cucumber.messages.StepMatchArgument"
216
+ optional :pickle_step_id, :string, 2
217
+ repeated :step_definition_ids, :string, 3
218
+ repeated :step_match_arguments, :message, 4, "io.cucumber.messages.StepMatchArgument"
217
219
  optional :hookId, :string, 5
218
220
  end
219
221
  add_message "io.cucumber.messages.PickleAccepted" do
220
- optional :pickleId, :string, 1
222
+ optional :pickle_id, :string, 1
221
223
  end
222
224
  add_message "io.cucumber.messages.PickleRejected" do
223
- optional :pickleId, :string, 2
225
+ optional :pickle_id, :string, 2
224
226
  end
225
227
  add_message "io.cucumber.messages.TestRunStarted" do
226
228
  optional :timestamp, :message, 1, "io.cucumber.messages.Timestamp"
227
229
  end
228
230
  add_message "io.cucumber.messages.TestCasePreparedStep" do
229
- optional :sourceLocation, :message, 1, "io.cucumber.messages.SourceReference"
230
- optional :actionLocation, :message, 2, "io.cucumber.messages.SourceReference"
231
+ optional :source_location, :message, 1, "io.cucumber.messages.SourceReference"
232
+ optional :action_location, :message, 2, "io.cucumber.messages.SourceReference"
231
233
  end
232
234
  add_message "io.cucumber.messages.TestCasePrepared" do
233
- optional :pickleId, :string, 1
235
+ optional :pickle_id, :string, 1
234
236
  repeated :steps, :message, 2, "io.cucumber.messages.TestCasePreparedStep"
235
237
  end
236
238
  add_message "io.cucumber.messages.TestCaseStarted" do
237
239
  optional :timestamp, :message, 1, "io.cucumber.messages.Timestamp"
238
240
  optional :platform, :message, 2, "io.cucumber.messages.TestCaseStarted.Platform"
239
241
  optional :attempt, :uint32, 3
240
- optional :testCaseId, :string, 4
242
+ optional :test_case_id, :string, 4
241
243
  optional :id, :string, 5
242
244
  end
243
245
  add_message "io.cucumber.messages.TestCaseStarted.Platform" do
@@ -248,25 +250,25 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
248
250
  end
249
251
  add_message "io.cucumber.messages.TestCaseFinished" do
250
252
  optional :timestamp, :message, 1, "io.cucumber.messages.Timestamp"
251
- optional :testResult, :message, 2, "io.cucumber.messages.TestResult"
252
- optional :testCaseStartedId, :string, 3
253
+ optional :test_result, :message, 2, "io.cucumber.messages.TestResult"
254
+ optional :test_case_started_id, :string, 3
253
255
  end
254
256
  add_message "io.cucumber.messages.TestStepStarted" do
255
257
  optional :timestamp, :message, 1, "io.cucumber.messages.Timestamp"
256
- optional :testStepId, :string, 2
257
- optional :testCaseStartedId, :string, 3
258
+ optional :test_step_id, :string, 2
259
+ optional :test_case_started_id, :string, 3
258
260
  end
259
261
  add_message "io.cucumber.messages.TestStepFinished" do
260
- optional :testResult, :message, 1, "io.cucumber.messages.TestResult"
262
+ optional :test_result, :message, 1, "io.cucumber.messages.TestResult"
261
263
  optional :timestamp, :message, 2, "io.cucumber.messages.Timestamp"
262
- optional :testStepId, :string, 3
263
- optional :testCaseStartedId, :string, 4
264
+ optional :test_step_id, :string, 3
265
+ optional :test_case_started_id, :string, 4
264
266
  end
265
267
  add_message "io.cucumber.messages.TestResult" do
266
268
  optional :status, :enum, 1, "io.cucumber.messages.TestResult.Status"
267
269
  optional :message, :string, 2
268
270
  optional :duration, :message, 3, "io.cucumber.messages.Duration"
269
- optional :willBeRetried, :bool, 4
271
+ optional :will_be_retried, :bool, 4
270
272
  end
271
273
  add_enum "io.cucumber.messages.TestResult.Status" do
272
274
  value :UNKNOWN, 0
@@ -282,24 +284,24 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
282
284
  optional :timestamp, :message, 2, "io.cucumber.messages.Timestamp"
283
285
  end
284
286
  add_message "io.cucumber.messages.CommandStart" do
285
- optional :baseDirectory, :string, 2
286
- optional :sourcesConfig, :message, 3, "io.cucumber.messages.SourcesConfig"
287
- optional :runtimeConfig, :message, 4, "io.cucumber.messages.RuntimeConfig"
288
- optional :supportCodeConfig, :message, 5, "io.cucumber.messages.SupportCodeConfig"
287
+ optional :base_directory, :string, 2
288
+ optional :sources_config, :message, 3, "io.cucumber.messages.SourcesConfig"
289
+ optional :runtime_config, :message, 4, "io.cucumber.messages.RuntimeConfig"
290
+ optional :support_code_config, :message, 5, "io.cucumber.messages.SupportCodeConfig"
289
291
  end
290
292
  add_message "io.cucumber.messages.SourcesConfig" do
291
- repeated :absolutePaths, :string, 1
293
+ repeated :absolute_paths, :string, 1
292
294
  optional :language, :string, 2
293
295
  optional :filters, :message, 3, "io.cucumber.messages.SourcesFilterConfig"
294
296
  optional :order, :message, 4, "io.cucumber.messages.SourcesOrder"
295
297
  end
296
298
  add_message "io.cucumber.messages.SourcesFilterConfig" do
297
- optional :tagExpression, :string, 1
298
- repeated :nameRegularExpressions, :string, 2
299
- repeated :uriToLinesMapping, :message, 3, "io.cucumber.messages.UriToLinesMapping"
299
+ optional :tag_expression, :string, 1
300
+ repeated :name_regular_expressions, :string, 2
301
+ repeated :uri_to_lines_mapping, :message, 3, "io.cucumber.messages.UriToLinesMapping"
300
302
  end
301
303
  add_message "io.cucumber.messages.UriToLinesMapping" do
302
- optional :absolutePath, :string, 1
304
+ optional :absolute_path, :string, 1
303
305
  repeated :lines, :uint64, 2
304
306
  end
305
307
  add_message "io.cucumber.messages.SourcesOrder" do
@@ -307,73 +309,73 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
307
309
  optional :seed, :uint64, 2
308
310
  end
309
311
  add_message "io.cucumber.messages.RuntimeConfig" do
310
- optional :isFailFast, :bool, 1
311
- optional :isDryRun, :bool, 2
312
- optional :isStrict, :bool, 3
313
- optional :maxParallel, :uint64, 4
312
+ optional :is_fail_fast, :bool, 1
313
+ optional :is_dry_run, :bool, 2
314
+ optional :is_strict, :bool, 3
315
+ optional :max_parallel, :uint64, 4
314
316
  end
315
317
  add_message "io.cucumber.messages.SupportCodeConfig" do
316
- repeated :beforeTestCaseHookDefinitionConfigs, :message, 1, "io.cucumber.messages.TestCaseHookDefinitionConfig"
317
- repeated :afterTestCaseHookDefinitionConfigs, :message, 2, "io.cucumber.messages.TestCaseHookDefinitionConfig"
318
- repeated :stepDefinitionConfigs, :message, 3, "io.cucumber.messages.StepDefinitionConfig"
319
- repeated :parameterTypeConfigs, :message, 4, "io.cucumber.messages.ParameterTypeConfig"
318
+ repeated :before_test_case_hooks, :message, 1, "io.cucumber.messages.Hook"
319
+ repeated :after_test_case_hooks, :message, 2, "io.cucumber.messages.Hook"
320
+ repeated :step_definitions, :message, 3, "io.cucumber.messages.StepDefinition"
321
+ repeated :parameter_types, :message, 4, "io.cucumber.messages.ParameterType"
320
322
  end
321
- add_message "io.cucumber.messages.TestCaseHookDefinitionConfig" do
323
+ add_message "io.cucumber.messages.Hook" do
322
324
  optional :id, :string, 1
323
- optional :tagExpression, :string, 2
324
- optional :location, :message, 3, "io.cucumber.messages.SourceReference"
325
+ optional :tag_expression, :string, 2
326
+ optional :source_reference, :message, 3, "io.cucumber.messages.SourceReference"
325
327
  end
326
- add_message "io.cucumber.messages.StepDefinitionConfig" do
328
+ add_message "io.cucumber.messages.StepDefinition" do
327
329
  optional :id, :string, 1
328
330
  optional :pattern, :message, 2, "io.cucumber.messages.StepDefinitionPattern"
329
- optional :location, :message, 3, "io.cucumber.messages.SourceReference"
331
+ optional :source_reference, :message, 3, "io.cucumber.messages.SourceReference"
330
332
  end
331
333
  add_message "io.cucumber.messages.StepDefinitionPattern" do
332
334
  optional :source, :string, 1
333
335
  optional :type, :enum, 2, "io.cucumber.messages.StepDefinitionPatternType"
334
336
  end
335
- add_message "io.cucumber.messages.ParameterTypeConfig" do
337
+ add_message "io.cucumber.messages.ParameterType" do
336
338
  optional :name, :string, 1
337
- repeated :regularExpressions, :string, 2
338
- optional :preferForRegularExpressionMatch, :bool, 3
339
- optional :useForSnippets, :bool, 4
339
+ repeated :regular_expressions, :string, 2
340
+ optional :prefer_for_regular_expression_match, :bool, 3
341
+ optional :use_for_snippets, :bool, 4
340
342
  end
341
343
  add_message "io.cucumber.messages.CommandActionComplete" do
342
- optional :completedId, :string, 1
344
+ optional :completed_id, :string, 1
343
345
  oneof :result do
344
- optional :testResult, :message, 2, "io.cucumber.messages.TestResult"
346
+ optional :test_result, :message, 2, "io.cucumber.messages.TestResult"
345
347
  optional :snippet, :string, 3
346
348
  end
347
349
  end
348
350
  add_message "io.cucumber.messages.CommandRunBeforeTestRunHooks" do
349
- optional :actionId, :string, 1
351
+ optional :action_id, :string, 1
350
352
  end
351
353
  add_message "io.cucumber.messages.CommandRunAfterTestRunHooks" do
352
- optional :actionId, :string, 1
354
+ optional :action_id, :string, 1
353
355
  end
354
356
  add_message "io.cucumber.messages.CommandInitializeTestCase" do
355
- optional :actionId, :string, 1
357
+ optional :action_id, :string, 1
356
358
  optional :pickle, :message, 2, "io.cucumber.messages.Pickle"
357
359
  end
358
360
  add_message "io.cucumber.messages.CommandRunBeforeTestCaseHook" do
359
- optional :actionId, :string, 1
360
- optional :testCaseHookDefinitionId, :string, 2
361
- optional :testCaseId, :string, 3
361
+ optional :action_id, :string, 1
362
+ optional :hook_id, :string, 2
363
+ optional :test_case_id, :string, 3
362
364
  end
363
365
  add_message "io.cucumber.messages.CommandRunAfterTestCaseHook" do
364
- optional :actionId, :string, 1
365
- optional :testCaseHookDefinitionId, :string, 2
366
- optional :testCaseId, :string, 3
366
+ optional :action_id, :string, 1
367
+ optional :hook_id, :string, 2
368
+ optional :test_case_id, :string, 3
367
369
  end
368
370
  add_message "io.cucumber.messages.CommandRunTestStep" do
369
- optional :actionId, :string, 1
370
- optional :stepDefinitionId, :string, 2
371
- repeated :stepMatchArguments, :message, 3, "io.cucumber.messages.StepMatchArgument"
372
- optional :pickleStepArgument, :message, 4, "io.cucumber.messages.PickleStepArgument"
373
- optional :testCaseId, :string, 5
371
+ optional :action_id, :string, 1
372
+ optional :step_definition_id, :string, 2
373
+ repeated :step_match_arguments, :message, 3, "io.cucumber.messages.StepMatchArgument"
374
+ optional :pickle_step_argument, :message, 4, "io.cucumber.messages.PickleStepArgument"
375
+ optional :test_case_id, :string, 5
374
376
  end
375
377
  add_message "io.cucumber.messages.StepMatchArgument" do
376
- optional :parameterTypeName, :string, 1
378
+ optional :parameter_type_name, :string, 1
377
379
  optional :group, :message, 2, "io.cucumber.messages.StepMatchArgument.Group"
378
380
  end
379
381
  add_message "io.cucumber.messages.StepMatchArgument.Group" do
@@ -382,13 +384,13 @@ Google::Protobuf::DescriptorPool.generated_pool.build do
382
384
  repeated :children, :message, 3, "io.cucumber.messages.StepMatchArgument.Group"
383
385
  end
384
386
  add_message "io.cucumber.messages.CommandGenerateSnippet" do
385
- optional :actionId, :string, 1
386
- repeated :generatedExpressions, :message, 2, "io.cucumber.messages.GeneratedExpression"
387
- optional :pickleStepArgument, :message, 3, "io.cucumber.messages.PickleStepArgument"
387
+ optional :action_id, :string, 1
388
+ repeated :generated_expressions, :message, 2, "io.cucumber.messages.GeneratedExpression"
389
+ optional :pickle_step_argument, :message, 3, "io.cucumber.messages.PickleStepArgument"
388
390
  end
389
391
  add_message "io.cucumber.messages.GeneratedExpression" do
390
392
  optional :text, :string, 1
391
- repeated :parameterTypeNames, :string, 2
393
+ repeated :parameter_type_names, :string, 2
392
394
  end
393
395
  add_enum "io.cucumber.messages.SourcesOrderType" do
394
396
  value :ORDER_OF_DEFINITION, 0
@@ -456,10 +458,10 @@ module Cucumber
456
458
  SourcesOrder = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.SourcesOrder").msgclass
457
459
  RuntimeConfig = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.RuntimeConfig").msgclass
458
460
  SupportCodeConfig = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.SupportCodeConfig").msgclass
459
- TestCaseHookDefinitionConfig = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.TestCaseHookDefinitionConfig").msgclass
460
- StepDefinitionConfig = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.StepDefinitionConfig").msgclass
461
+ Hook = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.Hook").msgclass
462
+ StepDefinition = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.StepDefinition").msgclass
461
463
  StepDefinitionPattern = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.StepDefinitionPattern").msgclass
462
- ParameterTypeConfig = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.ParameterTypeConfig").msgclass
464
+ ParameterType = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.ParameterType").msgclass
463
465
  CommandActionComplete = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.CommandActionComplete").msgclass
464
466
  CommandRunBeforeTestRunHooks = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.CommandRunBeforeTestRunHooks").msgclass
465
467
  CommandRunAfterTestRunHooks = Google::Protobuf::DescriptorPool.generated_pool.lookup("io.cucumber.messages.CommandRunAfterTestRunHooks").msgclass
@@ -0,0 +1,29 @@
1
+ require 'rspec'
2
+ require 'cucumber/messages'
3
+
4
+ describe Cucumber::Messages::IdGenerator::Incrementing do
5
+ subject { Cucumber::Messages::IdGenerator::Incrementing.new }
6
+
7
+ context '#new_id' do
8
+ it 'returns 0 the first time' do
9
+ expect(subject.new_id).to eq("0")
10
+ end
11
+
12
+ it 'increments on every call' do
13
+ expect(subject.new_id).to eq("0")
14
+ expect(subject.new_id).to eq("1")
15
+ expect(subject.new_id).to eq("2")
16
+ end
17
+ end
18
+ end
19
+
20
+ describe Cucumber::Messages::IdGenerator::UUID do
21
+ subject { Cucumber::Messages::IdGenerator::UUID.new }
22
+
23
+ context '#new_id' do
24
+ it 'generates a UUID' do
25
+ allowed_characters = "[0-9a-fA-F]"
26
+ expect(subject.new_id).to match(/#{allowed_characters}{8}\-#{allowed_characters}{4}\-#{allowed_characters}{4}\-#{allowed_characters}{4}\-#{allowed_characters}{12}/)
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,29 @@
1
+ require 'cucumber/messages'
2
+
3
+ module Cucumber
4
+ module Messages
5
+ describe Messages do
6
+
7
+ it "can be serialised over an ndjson stream" do
8
+ outgoing_messages = [
9
+ Envelope.new(source: Source.new(data: 'Feature: Hello')),
10
+ Envelope.new(attachment: Attachment.new(data: 'some stack trace'))
11
+ ]
12
+
13
+ io = StringIO.new
14
+ write_outgoing_messages(outgoing_messages, io)
15
+
16
+ io.rewind
17
+ incoming_messages = NdjsonToMessageEnumerator.new(io)
18
+
19
+ expect(incoming_messages.to_a).to(eq(outgoing_messages))
20
+ end
21
+
22
+ def write_outgoing_messages(messages, out)
23
+ messages.each do |message|
24
+ message.write_ndjson_to(out)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -4,25 +4,21 @@ module Cucumber
4
4
  module Messages
5
5
  describe Messages do
6
6
 
7
- it "can be serialised over a stream" do
8
- outgoing_messages = create_outgoing_messages
7
+ it "can be serialised over a binary stream" do
8
+ outgoing_messages = [
9
+ Envelope.new(source: Source.new(data: 'Feature: Hello')),
10
+ Envelope.new(attachment: Attachment.new(data: 'some stack trace'))
11
+ ]
9
12
 
10
13
  io = StringIO.new
11
14
  write_outgoing_messages(outgoing_messages, io)
12
15
 
13
16
  io.rewind
14
- incoming_messages = ProtobufIoEnumerator.call(io)
17
+ incoming_messages = BinaryToMessageEnumerator.new(io)
15
18
 
16
19
  expect(incoming_messages.to_a).to(eq(outgoing_messages))
17
20
  end
18
21
 
19
- def create_outgoing_messages
20
- return [
21
- Envelope.new(source: Source.new(data: 'Feature: Hello')),
22
- Envelope.new(attachment: Attachment.new(data: 'some stack trace'))
23
- ]
24
- end
25
-
26
22
  def write_outgoing_messages(messages, out)
27
23
  messages.each do |message|
28
24
  message.write_delimited_to(out)
@@ -30,4 +26,4 @@ module Cucumber
30
26
  end
31
27
  end
32
28
  end
33
- end
29
+ end
@@ -0,0 +1,26 @@
1
+ require 'cucumber/messages'
2
+
3
+ module Cucumber
4
+ module Messages
5
+ describe TimeConversion do
6
+ include TimeConversion
7
+
8
+ it 'converts to and from milliseconds since epoch' do
9
+ time = Time.now
10
+ timestamp = time_to_timestamp(time)
11
+ time_again = timestamp_to_time(timestamp)
12
+
13
+ expect(time_again).to eq(time)
14
+ end
15
+
16
+
17
+ it 'converts to and from seconds duration' do
18
+ duration_in_seconds = 1234
19
+ duration = seconds_to_duration(duration_in_seconds)
20
+ duration_in_seconds_again = duration_to_seconds(duration)
21
+
22
+ expect(duration_in_seconds_again).to eq(duration_in_seconds)
23
+ end
24
+ end
25
+ end
26
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-messages
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.0.0
4
+ version: 8.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aslak Hellesøy
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-14 00:00:00.000000000 Z
11
+ date: 2019-12-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: google-protobuf
@@ -30,6 +30,26 @@ dependencies:
30
30
  - - "<="
31
31
  - !ruby/object:Gem::Version
32
32
  version: '3.8'
33
+ - !ruby/object:Gem::Dependency
34
+ name: json
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '2.2'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.2.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: '2.2'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.2.0
33
53
  - !ruby/object:Gem::Dependency
34
54
  name: rake
35
55
  requirement: !ruby/object:Gem::Requirement
@@ -99,13 +119,20 @@ files:
99
119
  - LICENSE
100
120
  - README.md
101
121
  - lib/cucumber/messages.rb
122
+ - lib/cucumber/messages/binary_to_message_enumerator.rb
123
+ - lib/cucumber/messages/id_generator.rb
124
+ - lib/cucumber/messages/ndjson_to_message_enumerator.rb
102
125
  - lib/cucumber/messages/protobuf_delimited.rb
103
- - lib/cucumber/messages/protobuf_io_enumerator.rb
126
+ - lib/cucumber/messages/protobuf_ndjson.rb
127
+ - lib/cucumber/messages/time_conversion.rb
104
128
  - lib/cucumber/messages/varint.rb
105
129
  - lib/cucumber/messages_pb.rb
106
130
  - spec/capture_warnings.rb
107
131
  - spec/coverage.rb
108
- - spec/cucumber/messages/message_serialization_spec.rb
132
+ - spec/cucumber/messages/id_generator_spec.rb
133
+ - spec/cucumber/messages/ndjson_serialization_spec.rb
134
+ - spec/cucumber/messages/protobuf_serialization_spec.rb
135
+ - spec/cucumber/messages/time_conversion_spec.rb
109
136
  homepage: https://github.com/cucumber/cucumber-messages-ruby#readme
110
137
  licenses:
111
138
  - MIT
@@ -135,8 +162,11 @@ rubyforge_project:
135
162
  rubygems_version: 2.7.6.2
136
163
  signing_key:
137
164
  specification_version: 4
138
- summary: cucumber-messages-7.0.0
165
+ summary: cucumber-messages-8.0.0
139
166
  test_files:
140
- - spec/cucumber/messages/message_serialization_spec.rb
167
+ - spec/cucumber/messages/time_conversion_spec.rb
168
+ - spec/cucumber/messages/ndjson_serialization_spec.rb
169
+ - spec/cucumber/messages/protobuf_serialization_spec.rb
170
+ - spec/cucumber/messages/id_generator_spec.rb
141
171
  - spec/capture_warnings.rb
142
172
  - spec/coverage.rb