cucumber-messages 24.1.0 → 25.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 +4 -4
- data/VERSION +1 -1
- data/lib/cucumber/messages/attachment.rb +126 -0
- data/lib/cucumber/messages/attachment_content_encoding.rb +11 -0
- data/lib/cucumber/messages/background.rb +64 -0
- data/lib/cucumber/messages/ci.rb +62 -0
- data/lib/cucumber/messages/comment.rb +50 -0
- data/lib/cucumber/messages/data_table.rb +41 -0
- data/lib/cucumber/messages/doc_string.rb +51 -0
- data/lib/cucumber/messages/duration.rb +50 -0
- data/lib/cucumber/messages/envelope.rb +124 -0
- data/lib/cucumber/messages/examples.rb +74 -0
- data/lib/cucumber/messages/exception.rb +57 -0
- data/lib/cucumber/messages/feature.rb +87 -0
- data/lib/cucumber/messages/feature_child.rb +49 -0
- data/lib/cucumber/messages/gherkin_document.rb +62 -0
- data/lib/cucumber/messages/git.rb +54 -0
- data/lib/cucumber/messages/group.rb +46 -0
- data/lib/cucumber/messages/helpers/id_generator/incrementing.rb +20 -0
- data/lib/cucumber/messages/helpers/id_generator/uuid.rb +17 -0
- data/lib/cucumber/messages/helpers/id_generator.rb +4 -0
- data/lib/cucumber/messages/helpers/ndjson_to_message_enumerator.rb +30 -0
- data/lib/cucumber/messages/helpers/time_conversion.rb +31 -0
- data/lib/cucumber/messages/hook.rb +51 -0
- data/lib/cucumber/messages/java_method.rb +46 -0
- data/lib/cucumber/messages/java_stack_trace_element.rb +46 -0
- data/lib/cucumber/messages/location.rb +44 -0
- data/lib/cucumber/messages/message.rb +92 -4
- data/lib/cucumber/messages/meta.rb +81 -0
- data/lib/cucumber/messages/parameter_type.rb +64 -0
- data/lib/cucumber/messages/parse_error.rb +41 -0
- data/lib/cucumber/messages/pickle.rb +107 -0
- data/lib/cucumber/messages/pickle_doc_string.rb +41 -0
- data/lib/cucumber/messages/pickle_step.rb +71 -0
- data/lib/cucumber/messages/pickle_step_argument.rb +43 -0
- data/lib/cucumber/messages/pickle_step_type.rb +13 -0
- data/lib/cucumber/messages/pickle_table.rb +36 -0
- data/lib/cucumber/messages/pickle_table_cell.rb +36 -0
- data/lib/cucumber/messages/pickle_table_row.rb +36 -0
- data/lib/cucumber/messages/pickle_tag.rb +47 -0
- data/lib/cucumber/messages/product.rb +49 -0
- data/lib/cucumber/messages/rule.rb +72 -0
- data/lib/cucumber/messages/rule_child.rb +44 -0
- data/lib/cucumber/messages/scenario.rb +74 -0
- data/lib/cucumber/messages/source.rb +63 -0
- data/lib/cucumber/messages/source_media_type.rb +11 -0
- data/lib/cucumber/messages/source_reference.rb +55 -0
- data/lib/cucumber/messages/step.rb +80 -0
- data/lib/cucumber/messages/step_definition.rb +46 -0
- data/lib/cucumber/messages/step_definition_pattern.rb +41 -0
- data/lib/cucumber/messages/step_definition_pattern_type.rb +11 -0
- data/lib/cucumber/messages/step_keyword_type.rb +14 -0
- data/lib/cucumber/messages/step_match_argument.rb +54 -0
- data/lib/cucumber/messages/step_match_arguments_list.rb +36 -0
- data/lib/cucumber/messages/table_cell.rb +49 -0
- data/lib/cucumber/messages/table_row.rb +54 -0
- data/lib/cucumber/messages/tag.rb +58 -0
- data/lib/cucumber/messages/test_case.rb +54 -0
- data/lib/cucumber/messages/test_case_finished.rb +46 -0
- data/lib/cucumber/messages/test_case_started.rb +69 -0
- data/lib/cucumber/messages/test_run_finished.rb +63 -0
- data/lib/cucumber/messages/test_run_started.rb +36 -0
- data/lib/cucumber/messages/test_step.rb +74 -0
- data/lib/cucumber/messages/test_step_finished.rb +51 -0
- data/lib/cucumber/messages/test_step_result.rb +57 -0
- data/lib/cucumber/messages/test_step_result_status.rb +16 -0
- data/lib/cucumber/messages/test_step_started.rb +46 -0
- data/lib/cucumber/messages/timestamp.rb +52 -0
- data/lib/cucumber/messages/undefined_parameter_type.rb +41 -0
- data/lib/cucumber/messages.rb +9 -5
- metadata +110 -30
- data/lib/cucumber/messages/id_generator.rb +0 -24
- data/lib/cucumber/messages/message/deserialization.rb +0 -37
- data/lib/cucumber/messages/message/serialization.rb +0 -70
- data/lib/cucumber/messages/message/utils.rb +0 -45
- data/lib/cucumber/messages/ndjson_to_message_enumerator.rb +0 -21
- data/lib/cucumber/messages/time_conversion.rb +0 -33
- data/lib/cucumber/messages.deserializers.rb +0 -1208
- data/lib/cucumber/messages.dtos.rb +0 -1782
@@ -0,0 +1,46 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The code was auto-generated by {this script}[https://github.com/cucumber/messages/blob/main/jsonschema/scripts/codegen.rb]
|
4
|
+
module Cucumber
|
5
|
+
module Messages
|
6
|
+
##
|
7
|
+
# Represents the TestStepStarted message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
|
8
|
+
##
|
9
|
+
##
|
10
|
+
class TestStepStarted < Message
|
11
|
+
attr_reader :test_case_started_id
|
12
|
+
|
13
|
+
attr_reader :test_step_id
|
14
|
+
|
15
|
+
attr_reader :timestamp
|
16
|
+
|
17
|
+
def initialize(
|
18
|
+
test_case_started_id: '',
|
19
|
+
test_step_id: '',
|
20
|
+
timestamp: Timestamp.new
|
21
|
+
)
|
22
|
+
@test_case_started_id = test_case_started_id
|
23
|
+
@test_step_id = test_step_id
|
24
|
+
@timestamp = timestamp
|
25
|
+
super()
|
26
|
+
end
|
27
|
+
|
28
|
+
##
|
29
|
+
# Returns a new TestStepStarted from the given hash.
|
30
|
+
# If the hash keys are camelCased, they are properly assigned to the
|
31
|
+
# corresponding snake_cased attributes.
|
32
|
+
#
|
33
|
+
# Cucumber::Messages::TestStepStarted.from_h(some_hash) # => #<Cucumber::Messages::TestStepStarted:0x... ...>
|
34
|
+
##
|
35
|
+
def self.from_h(hash)
|
36
|
+
return nil if hash.nil?
|
37
|
+
|
38
|
+
new(
|
39
|
+
test_case_started_id: hash[:testCaseStartedId],
|
40
|
+
test_step_id: hash[:testStepId],
|
41
|
+
timestamp: Timestamp.from_h(hash[:timestamp])
|
42
|
+
)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The code was auto-generated by {this script}[https://github.com/cucumber/messages/blob/main/jsonschema/scripts/codegen.rb]
|
4
|
+
module Cucumber
|
5
|
+
module Messages
|
6
|
+
##
|
7
|
+
# Represents the Timestamp message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
|
8
|
+
##
|
9
|
+
##
|
10
|
+
class Timestamp < Message
|
11
|
+
##
|
12
|
+
# Represents seconds of UTC time since Unix epoch
|
13
|
+
# 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
|
14
|
+
# 9999-12-31T23:59:59Z inclusive.
|
15
|
+
##
|
16
|
+
attr_reader :seconds
|
17
|
+
|
18
|
+
##
|
19
|
+
# Non-negative fractions of a second at nanosecond resolution. Negative
|
20
|
+
# second values with fractions must still have non-negative nanos values
|
21
|
+
# that count forward in time. Must be from 0 to 999,999,999
|
22
|
+
# inclusive.
|
23
|
+
##
|
24
|
+
attr_reader :nanos
|
25
|
+
|
26
|
+
def initialize(
|
27
|
+
seconds: 0,
|
28
|
+
nanos: 0
|
29
|
+
)
|
30
|
+
@seconds = seconds
|
31
|
+
@nanos = nanos
|
32
|
+
super()
|
33
|
+
end
|
34
|
+
|
35
|
+
##
|
36
|
+
# Returns a new Timestamp from the given hash.
|
37
|
+
# If the hash keys are camelCased, they are properly assigned to the
|
38
|
+
# corresponding snake_cased attributes.
|
39
|
+
#
|
40
|
+
# Cucumber::Messages::Timestamp.from_h(some_hash) # => #<Cucumber::Messages::Timestamp:0x... ...>
|
41
|
+
##
|
42
|
+
def self.from_h(hash)
|
43
|
+
return nil if hash.nil?
|
44
|
+
|
45
|
+
new(
|
46
|
+
seconds: hash[:seconds],
|
47
|
+
nanos: hash[:nanos]
|
48
|
+
)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# The code was auto-generated by {this script}[https://github.com/cucumber/messages/blob/main/jsonschema/scripts/codegen.rb]
|
4
|
+
module Cucumber
|
5
|
+
module Messages
|
6
|
+
##
|
7
|
+
# Represents the UndefinedParameterType message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
|
8
|
+
##
|
9
|
+
##
|
10
|
+
class UndefinedParameterType < Message
|
11
|
+
attr_reader :expression
|
12
|
+
|
13
|
+
attr_reader :name
|
14
|
+
|
15
|
+
def initialize(
|
16
|
+
expression: '',
|
17
|
+
name: ''
|
18
|
+
)
|
19
|
+
@expression = expression
|
20
|
+
@name = name
|
21
|
+
super()
|
22
|
+
end
|
23
|
+
|
24
|
+
##
|
25
|
+
# Returns a new UndefinedParameterType from the given hash.
|
26
|
+
# If the hash keys are camelCased, they are properly assigned to the
|
27
|
+
# corresponding snake_cased attributes.
|
28
|
+
#
|
29
|
+
# Cucumber::Messages::UndefinedParameterType.from_h(some_hash) # => #<Cucumber::Messages::UndefinedParameterType:0x... ...>
|
30
|
+
##
|
31
|
+
def self.from_h(hash)
|
32
|
+
return nil if hash.nil?
|
33
|
+
|
34
|
+
new(
|
35
|
+
expression: hash[:expression],
|
36
|
+
name: hash[:name]
|
37
|
+
)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/lib/cucumber/messages.rb
CHANGED
@@ -1,10 +1,14 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require 'cucumber/messages/
|
4
|
-
require 'cucumber/messages
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'cucumber/messages/helpers/ndjson_to_message_enumerator'
|
4
|
+
require 'cucumber/messages/helpers/time_conversion'
|
5
|
+
require 'cucumber/messages/helpers/id_generator'
|
6
|
+
require 'cucumber/messages/message'
|
7
|
+
|
8
|
+
Dir["#{File.dirname(__FILE__)}/messages/*.rb"].each { |file| require file }
|
5
9
|
|
6
10
|
module Cucumber
|
7
11
|
module Messages
|
8
|
-
VERSION = File.read(File.expand_path(
|
12
|
+
VERSION = File.read(File.expand_path('../../VERSION', __dir__)).strip
|
9
13
|
end
|
10
14
|
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:
|
4
|
+
version: 25.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: 2024-
|
11
|
+
date: 2024-06-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cucumber-compatibility-kit
|
@@ -16,76 +16,98 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '15.0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '15.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '13.
|
34
|
-
- - ">="
|
35
|
-
- !ruby/object:Gem::Version
|
36
|
-
version: 13.0.6
|
33
|
+
version: '13.1'
|
37
34
|
type: :development
|
38
35
|
prerelease: false
|
39
36
|
version_requirements: !ruby/object:Gem::Requirement
|
40
37
|
requirements:
|
41
38
|
- - "~>"
|
42
39
|
- !ruby/object:Gem::Version
|
43
|
-
version: '13.
|
44
|
-
- - ">="
|
45
|
-
- !ruby/object:Gem::Version
|
46
|
-
version: 13.0.6
|
40
|
+
version: '13.1'
|
47
41
|
- !ruby/object:Gem::Dependency
|
48
42
|
name: rspec
|
49
43
|
requirement: !ruby/object:Gem::Requirement
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '3.
|
47
|
+
version: '3.13'
|
54
48
|
type: :development
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
52
|
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '3.
|
54
|
+
version: '3.13'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: rubocop
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
64
58
|
requirements:
|
65
59
|
- - "~>"
|
66
60
|
- !ruby/object:Gem::Version
|
67
|
-
version: 1.
|
61
|
+
version: 1.50.2
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 1.50.2
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rubocop-performance
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.21.0
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 1.21.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop-rake
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.6.0
|
68
90
|
type: :development
|
69
91
|
prerelease: false
|
70
92
|
version_requirements: !ruby/object:Gem::Requirement
|
71
93
|
requirements:
|
72
94
|
- - "~>"
|
73
95
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
96
|
+
version: 0.6.0
|
75
97
|
- !ruby/object:Gem::Dependency
|
76
98
|
name: rubocop-rspec
|
77
99
|
requirement: !ruby/object:Gem::Requirement
|
78
100
|
requirements:
|
79
101
|
- - "~>"
|
80
102
|
- !ruby/object:Gem::Version
|
81
|
-
version: 2.
|
103
|
+
version: 2.25.0
|
82
104
|
type: :development
|
83
105
|
prerelease: false
|
84
106
|
version_requirements: !ruby/object:Gem::Requirement
|
85
107
|
requirements:
|
86
108
|
- - "~>"
|
87
109
|
- !ruby/object:Gem::Version
|
88
|
-
version: 2.
|
110
|
+
version: 2.25.0
|
89
111
|
description: JSON schema-based messages for Cucumber's inter-process communication
|
90
112
|
email: cukes@googlegroups.com
|
91
113
|
executables: []
|
@@ -94,16 +116,74 @@ extra_rdoc_files: []
|
|
94
116
|
files:
|
95
117
|
- README.md
|
96
118
|
- VERSION
|
97
|
-
- lib/cucumber/messages.deserializers.rb
|
98
|
-
- lib/cucumber/messages.dtos.rb
|
99
119
|
- lib/cucumber/messages.rb
|
100
|
-
- lib/cucumber/messages/
|
120
|
+
- lib/cucumber/messages/attachment.rb
|
121
|
+
- lib/cucumber/messages/attachment_content_encoding.rb
|
122
|
+
- lib/cucumber/messages/background.rb
|
123
|
+
- lib/cucumber/messages/ci.rb
|
124
|
+
- lib/cucumber/messages/comment.rb
|
125
|
+
- lib/cucumber/messages/data_table.rb
|
126
|
+
- lib/cucumber/messages/doc_string.rb
|
127
|
+
- lib/cucumber/messages/duration.rb
|
128
|
+
- lib/cucumber/messages/envelope.rb
|
129
|
+
- lib/cucumber/messages/examples.rb
|
130
|
+
- lib/cucumber/messages/exception.rb
|
131
|
+
- lib/cucumber/messages/feature.rb
|
132
|
+
- lib/cucumber/messages/feature_child.rb
|
133
|
+
- lib/cucumber/messages/gherkin_document.rb
|
134
|
+
- lib/cucumber/messages/git.rb
|
135
|
+
- lib/cucumber/messages/group.rb
|
136
|
+
- lib/cucumber/messages/helpers/id_generator.rb
|
137
|
+
- lib/cucumber/messages/helpers/id_generator/incrementing.rb
|
138
|
+
- lib/cucumber/messages/helpers/id_generator/uuid.rb
|
139
|
+
- lib/cucumber/messages/helpers/ndjson_to_message_enumerator.rb
|
140
|
+
- lib/cucumber/messages/helpers/time_conversion.rb
|
141
|
+
- lib/cucumber/messages/hook.rb
|
142
|
+
- lib/cucumber/messages/java_method.rb
|
143
|
+
- lib/cucumber/messages/java_stack_trace_element.rb
|
144
|
+
- lib/cucumber/messages/location.rb
|
101
145
|
- lib/cucumber/messages/message.rb
|
102
|
-
- lib/cucumber/messages/
|
103
|
-
- lib/cucumber/messages/
|
104
|
-
- lib/cucumber/messages/
|
105
|
-
- lib/cucumber/messages/
|
106
|
-
- lib/cucumber/messages/
|
146
|
+
- lib/cucumber/messages/meta.rb
|
147
|
+
- lib/cucumber/messages/parameter_type.rb
|
148
|
+
- lib/cucumber/messages/parse_error.rb
|
149
|
+
- lib/cucumber/messages/pickle.rb
|
150
|
+
- lib/cucumber/messages/pickle_doc_string.rb
|
151
|
+
- lib/cucumber/messages/pickle_step.rb
|
152
|
+
- lib/cucumber/messages/pickle_step_argument.rb
|
153
|
+
- lib/cucumber/messages/pickle_step_type.rb
|
154
|
+
- lib/cucumber/messages/pickle_table.rb
|
155
|
+
- lib/cucumber/messages/pickle_table_cell.rb
|
156
|
+
- lib/cucumber/messages/pickle_table_row.rb
|
157
|
+
- lib/cucumber/messages/pickle_tag.rb
|
158
|
+
- lib/cucumber/messages/product.rb
|
159
|
+
- lib/cucumber/messages/rule.rb
|
160
|
+
- lib/cucumber/messages/rule_child.rb
|
161
|
+
- lib/cucumber/messages/scenario.rb
|
162
|
+
- lib/cucumber/messages/source.rb
|
163
|
+
- lib/cucumber/messages/source_media_type.rb
|
164
|
+
- lib/cucumber/messages/source_reference.rb
|
165
|
+
- lib/cucumber/messages/step.rb
|
166
|
+
- lib/cucumber/messages/step_definition.rb
|
167
|
+
- lib/cucumber/messages/step_definition_pattern.rb
|
168
|
+
- lib/cucumber/messages/step_definition_pattern_type.rb
|
169
|
+
- lib/cucumber/messages/step_keyword_type.rb
|
170
|
+
- lib/cucumber/messages/step_match_argument.rb
|
171
|
+
- lib/cucumber/messages/step_match_arguments_list.rb
|
172
|
+
- lib/cucumber/messages/table_cell.rb
|
173
|
+
- lib/cucumber/messages/table_row.rb
|
174
|
+
- lib/cucumber/messages/tag.rb
|
175
|
+
- lib/cucumber/messages/test_case.rb
|
176
|
+
- lib/cucumber/messages/test_case_finished.rb
|
177
|
+
- lib/cucumber/messages/test_case_started.rb
|
178
|
+
- lib/cucumber/messages/test_run_finished.rb
|
179
|
+
- lib/cucumber/messages/test_run_started.rb
|
180
|
+
- lib/cucumber/messages/test_step.rb
|
181
|
+
- lib/cucumber/messages/test_step_finished.rb
|
182
|
+
- lib/cucumber/messages/test_step_result.rb
|
183
|
+
- lib/cucumber/messages/test_step_result_status.rb
|
184
|
+
- lib/cucumber/messages/test_step_started.rb
|
185
|
+
- lib/cucumber/messages/timestamp.rb
|
186
|
+
- lib/cucumber/messages/undefined_parameter_type.rb
|
107
187
|
homepage: https://github.com/cucumber/messages#readme
|
108
188
|
licenses:
|
109
189
|
- MIT
|
@@ -122,15 +202,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
122
202
|
requirements:
|
123
203
|
- - ">="
|
124
204
|
- !ruby/object:Gem::Version
|
125
|
-
version: '
|
205
|
+
version: '3.0'
|
126
206
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
207
|
requirements:
|
128
208
|
- - ">="
|
129
209
|
- !ruby/object:Gem::Version
|
130
|
-
version: 3.
|
210
|
+
version: 3.2.3
|
131
211
|
requirements: []
|
132
|
-
rubygems_version: 3.
|
212
|
+
rubygems_version: 3.5.11
|
133
213
|
signing_key:
|
134
214
|
specification_version: 4
|
135
|
-
summary: cucumber-messages-
|
215
|
+
summary: cucumber-messages-25.0.0
|
136
216
|
test_files: []
|
@@ -1,24 +0,0 @@
|
|
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
|
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'cucumber/messages/message/utils'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
module Cucumber
|
5
|
-
module Messages
|
6
|
-
class Message
|
7
|
-
include Cucumber::Messages::Message::Utils
|
8
|
-
|
9
|
-
module Deserialization
|
10
|
-
def self.included(other)
|
11
|
-
other.extend(ClassMethods)
|
12
|
-
end
|
13
|
-
|
14
|
-
module ClassMethods
|
15
|
-
##
|
16
|
-
# Returns a new Message - or messages into an array - deserialized from the given json document.
|
17
|
-
# CamelCased keys are properly converted to snake_cased attributes in the process
|
18
|
-
#
|
19
|
-
# Cucumber::Messages::Duration.from_json('{"seconds":1,"nanos":42}') # => #<Cucumber::Messages::Duration:0x00007efda134c290 @seconds=1, @nanos=42>
|
20
|
-
# Cucumber::Messages::PickleTag.from_json('{"name":"foo","astNodeId":"abc-def"}') # => #<Cucumber::Messages::PickleTag:0x00007efda138cdb8 @name="foo", @ast_node_id="abc-def">
|
21
|
-
#
|
22
|
-
# It is recursive so embedded messages are also processed.
|
23
|
-
#
|
24
|
-
# json_string = { location: { line: 2 }, text: "comment" }.to_json
|
25
|
-
# Cucumber::Messages::Comment.from_json(json_string) # => #<Cucumber::Messages::Comment:0x00007efda6abf888 @location=#<Cucumber::Messages::Location:0x00007efda6abf978 @line=2, @column=nil>, @text="comment">
|
26
|
-
#
|
27
|
-
# json_string = { uri: 'file:///...', comments: [{text: 'text comment'}, {text: 'another comment'}]}.to_json
|
28
|
-
# Cucumber::Messages::GherkinDocument.from_json(json_string) # => #<Cucumber::Messages::GherkinDocument:0x00007efda11e6a90 ... @comments=[#<Cucumber::Messages::Comment:0x00007efda11e6e50 ..., #<Cucumber::Messages::Comment:0x00007efda11e6b58 ...>]>
|
29
|
-
##
|
30
|
-
def from_json(json_string)
|
31
|
-
from_h(JSON.parse(json_string, { symbolize_names: true }))
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'cucumber/messages/message/utils'
|
2
|
-
require 'json'
|
3
|
-
|
4
|
-
module Cucumber
|
5
|
-
module Messages
|
6
|
-
class Message
|
7
|
-
include Cucumber::Messages::Message::Utils
|
8
|
-
|
9
|
-
module Serialization
|
10
|
-
##
|
11
|
-
# Returns a new Hash formed from the message attributes
|
12
|
-
# If +camelize:+ keyword parameter is set to true, then keys will be camelized
|
13
|
-
# If +reject_nil_values:+ keyword parameter is set to true, resulting hash won't include nil values
|
14
|
-
#
|
15
|
-
# Cucumber::Messages::Duration.new(seconds: 1, nanos: 42).to_h # => { seconds: 1, nanos: 42 }
|
16
|
-
# Cucumber::Messages::PickleTag.new(name: 'foo', ast_node_id: 'abc-def').to_h(camelize: true) # => { name: 'foo', astNodeId: 'abc-def' }
|
17
|
-
# Cucumber::Messages::PickleTag.new(name: 'foo', ast_node_id: nil).to_h(reject_nil_values: true) # => { name: 'foo' }
|
18
|
-
#
|
19
|
-
# It is recursive so embedded messages are also processed
|
20
|
-
#
|
21
|
-
# location = Cucumber::Messages::Location.new(line: 2)
|
22
|
-
# Cucumber::Messages::Comment.new(location: location, text: 'comment').to_h # => { location: { line: 2, :column: nil }, text: "comment" }
|
23
|
-
##
|
24
|
-
def to_h(camelize: false, reject_nil_values: false)
|
25
|
-
resulting_hash = self.instance_variables.map do |variable_name|
|
26
|
-
h_key = variable_name[1..-1]
|
27
|
-
h_key = Cucumber::Messages::Message.camelize(h_key) if camelize
|
28
|
-
|
29
|
-
h_value = prepare_value(
|
30
|
-
self.instance_variable_get(variable_name),
|
31
|
-
camelize: camelize,
|
32
|
-
reject_nil_values: reject_nil_values
|
33
|
-
)
|
34
|
-
|
35
|
-
[ h_key.to_sym, h_value ]
|
36
|
-
end.to_h
|
37
|
-
|
38
|
-
resulting_hash.reject! { |_, value| value.nil? } if reject_nil_values
|
39
|
-
resulting_hash
|
40
|
-
end
|
41
|
-
|
42
|
-
##
|
43
|
-
# Generates a JSON document from the message.
|
44
|
-
# Keys are camelized during the process. Null values are not part of the json document.
|
45
|
-
#
|
46
|
-
# Cucumber::Messages::Duration.new(seconds: 1, nanos: 42).to_json # => '{"seconds":1,"nanos":42}'
|
47
|
-
# Cucumber::Messages::PickleTag.new(name: 'foo', ast_node_id: 'abc-def').to_json # => '{"name":"foo","astNodeId":"abc-def"}'
|
48
|
-
# Cucumber::Messages::PickleTag.new(name: 'foo', ast_node_id: nil).to_json # => '{"name":"foo"}'
|
49
|
-
#
|
50
|
-
# As #to_h, the method is recursive
|
51
|
-
#
|
52
|
-
# location = Cucumber::Messages::Location.new(line: 2)
|
53
|
-
# Cucumber::Messages::Comment.new(location: location, text: 'comment').to_json # => '{"location":{"line":2,"column":null},"text":"comment"}'
|
54
|
-
##
|
55
|
-
def to_json
|
56
|
-
to_h(camelize: true, reject_nil_values: true).to_json
|
57
|
-
end
|
58
|
-
|
59
|
-
private
|
60
|
-
|
61
|
-
def prepare_value(value, camelize:, reject_nil_values:)
|
62
|
-
return value.to_h(camelize: camelize, reject_nil_values: reject_nil_values) if value.is_a?(Cucumber::Messages::Message)
|
63
|
-
return value.map { |v| prepare_value(v, camelize: camelize, reject_nil_values: reject_nil_values) } if value.is_a?(Array)
|
64
|
-
|
65
|
-
value
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
module Cucumber
|
2
|
-
module Messages
|
3
|
-
class Message
|
4
|
-
module Utils
|
5
|
-
def self.included(other)
|
6
|
-
other.extend(ClassMethods)
|
7
|
-
end
|
8
|
-
|
9
|
-
module ClassMethods
|
10
|
-
##
|
11
|
-
# Makes an underscored, lowercase form from the expression in the string.
|
12
|
-
#
|
13
|
-
# underscore('GherkinDocument') # => "gherkin_document"
|
14
|
-
#
|
15
|
-
# This is a simplified version of the Ruby on Rails implementation
|
16
|
-
# https://github.com/rails/rails/blob/v6.1.3.2/activesupport/lib/active_support/inflector/methods.rb#L92
|
17
|
-
##
|
18
|
-
def underscore(term)
|
19
|
-
return term unless /[A-Z-]/.match?(term)
|
20
|
-
|
21
|
-
word = term.gsub(/([A-Z\d]+)([A-Z][a-z])/, '\1_\2')
|
22
|
-
word.gsub!(/([a-z\d])([A-Z])/, '\1_\2')
|
23
|
-
word.tr!("-", "_")
|
24
|
-
word.downcase!
|
25
|
-
word
|
26
|
-
end
|
27
|
-
|
28
|
-
##
|
29
|
-
# Converts strings to UpperCamelCase.
|
30
|
-
#
|
31
|
-
# camelize('gherkin_document') # => "GherkinDocument"
|
32
|
-
#
|
33
|
-
# This is a simplified version of the Ruby on Rails implementation
|
34
|
-
# https://github.com/rails/rails/blob/v6.1.3.2/activesupport/lib/active_support/inflector/methods.rb#L69
|
35
|
-
##
|
36
|
-
def camelize(term)
|
37
|
-
camelized = term.to_s
|
38
|
-
camelized.gsub!(/(?:_|(\/))([a-z\d]*)/i) { "#{$1}#{$2.capitalize}" }
|
39
|
-
camelized
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'cucumber/messages.deserializers'
|
2
|
-
|
3
|
-
module Cucumber
|
4
|
-
module Messages
|
5
|
-
class NdjsonToMessageEnumerator < Enumerator
|
6
|
-
def initialize(io)
|
7
|
-
super() do |yielder|
|
8
|
-
io.each_line do |line|
|
9
|
-
next if line.strip.empty?
|
10
|
-
begin
|
11
|
-
m = Envelope.from_json(line)
|
12
|
-
rescue => e
|
13
|
-
raise "Not JSON: #{line.strip}"
|
14
|
-
end
|
15
|
-
yielder.yield(m)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
module Cucumber
|
2
|
-
module Messages
|
3
|
-
module TimeConversion
|
4
|
-
NANOSECONDS_PER_SECOND = 1000000000
|
5
|
-
|
6
|
-
def time_to_timestamp(time)
|
7
|
-
{
|
8
|
-
'seconds' => time.to_i,
|
9
|
-
'nanos' => time.nsec
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
def timestamp_to_time(timestamp)
|
14
|
-
Time.at(timestamp['seconds'] + timestamp['nanos'].to_f / NANOSECONDS_PER_SECOND)
|
15
|
-
end
|
16
|
-
|
17
|
-
def seconds_to_duration(seconds_float)
|
18
|
-
seconds, second_modulus = seconds_float.divmod(1)
|
19
|
-
nanos = second_modulus * NANOSECONDS_PER_SECOND
|
20
|
-
{
|
21
|
-
'seconds' => seconds,
|
22
|
-
'nanos' => nanos.to_i
|
23
|
-
}
|
24
|
-
end
|
25
|
-
|
26
|
-
def duration_to_seconds(duration)
|
27
|
-
seconds_part = duration['seconds']
|
28
|
-
nanos_part = duration['nanos'].to_f / NANOSECONDS_PER_SECOND
|
29
|
-
seconds_part + nanos_part
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|