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.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/lib/cucumber/messages/attachment.rb +126 -0
  4. data/lib/cucumber/messages/attachment_content_encoding.rb +11 -0
  5. data/lib/cucumber/messages/background.rb +64 -0
  6. data/lib/cucumber/messages/ci.rb +62 -0
  7. data/lib/cucumber/messages/comment.rb +50 -0
  8. data/lib/cucumber/messages/data_table.rb +41 -0
  9. data/lib/cucumber/messages/doc_string.rb +51 -0
  10. data/lib/cucumber/messages/duration.rb +50 -0
  11. data/lib/cucumber/messages/envelope.rb +124 -0
  12. data/lib/cucumber/messages/examples.rb +74 -0
  13. data/lib/cucumber/messages/exception.rb +57 -0
  14. data/lib/cucumber/messages/feature.rb +87 -0
  15. data/lib/cucumber/messages/feature_child.rb +49 -0
  16. data/lib/cucumber/messages/gherkin_document.rb +62 -0
  17. data/lib/cucumber/messages/git.rb +54 -0
  18. data/lib/cucumber/messages/group.rb +46 -0
  19. data/lib/cucumber/messages/helpers/id_generator/incrementing.rb +20 -0
  20. data/lib/cucumber/messages/helpers/id_generator/uuid.rb +17 -0
  21. data/lib/cucumber/messages/helpers/id_generator.rb +4 -0
  22. data/lib/cucumber/messages/helpers/ndjson_to_message_enumerator.rb +30 -0
  23. data/lib/cucumber/messages/helpers/time_conversion.rb +31 -0
  24. data/lib/cucumber/messages/hook.rb +51 -0
  25. data/lib/cucumber/messages/java_method.rb +46 -0
  26. data/lib/cucumber/messages/java_stack_trace_element.rb +46 -0
  27. data/lib/cucumber/messages/location.rb +44 -0
  28. data/lib/cucumber/messages/message.rb +92 -4
  29. data/lib/cucumber/messages/meta.rb +81 -0
  30. data/lib/cucumber/messages/parameter_type.rb +64 -0
  31. data/lib/cucumber/messages/parse_error.rb +41 -0
  32. data/lib/cucumber/messages/pickle.rb +107 -0
  33. data/lib/cucumber/messages/pickle_doc_string.rb +41 -0
  34. data/lib/cucumber/messages/pickle_step.rb +71 -0
  35. data/lib/cucumber/messages/pickle_step_argument.rb +43 -0
  36. data/lib/cucumber/messages/pickle_step_type.rb +13 -0
  37. data/lib/cucumber/messages/pickle_table.rb +36 -0
  38. data/lib/cucumber/messages/pickle_table_cell.rb +36 -0
  39. data/lib/cucumber/messages/pickle_table_row.rb +36 -0
  40. data/lib/cucumber/messages/pickle_tag.rb +47 -0
  41. data/lib/cucumber/messages/product.rb +49 -0
  42. data/lib/cucumber/messages/rule.rb +72 -0
  43. data/lib/cucumber/messages/rule_child.rb +44 -0
  44. data/lib/cucumber/messages/scenario.rb +74 -0
  45. data/lib/cucumber/messages/source.rb +63 -0
  46. data/lib/cucumber/messages/source_media_type.rb +11 -0
  47. data/lib/cucumber/messages/source_reference.rb +55 -0
  48. data/lib/cucumber/messages/step.rb +80 -0
  49. data/lib/cucumber/messages/step_definition.rb +46 -0
  50. data/lib/cucumber/messages/step_definition_pattern.rb +41 -0
  51. data/lib/cucumber/messages/step_definition_pattern_type.rb +11 -0
  52. data/lib/cucumber/messages/step_keyword_type.rb +14 -0
  53. data/lib/cucumber/messages/step_match_argument.rb +54 -0
  54. data/lib/cucumber/messages/step_match_arguments_list.rb +36 -0
  55. data/lib/cucumber/messages/table_cell.rb +49 -0
  56. data/lib/cucumber/messages/table_row.rb +54 -0
  57. data/lib/cucumber/messages/tag.rb +58 -0
  58. data/lib/cucumber/messages/test_case.rb +54 -0
  59. data/lib/cucumber/messages/test_case_finished.rb +46 -0
  60. data/lib/cucumber/messages/test_case_started.rb +69 -0
  61. data/lib/cucumber/messages/test_run_finished.rb +63 -0
  62. data/lib/cucumber/messages/test_run_started.rb +36 -0
  63. data/lib/cucumber/messages/test_step.rb +74 -0
  64. data/lib/cucumber/messages/test_step_finished.rb +51 -0
  65. data/lib/cucumber/messages/test_step_result.rb +57 -0
  66. data/lib/cucumber/messages/test_step_result_status.rb +16 -0
  67. data/lib/cucumber/messages/test_step_started.rb +46 -0
  68. data/lib/cucumber/messages/timestamp.rb +52 -0
  69. data/lib/cucumber/messages/undefined_parameter_type.rb +41 -0
  70. data/lib/cucumber/messages.rb +9 -5
  71. metadata +110 -30
  72. data/lib/cucumber/messages/id_generator.rb +0 -24
  73. data/lib/cucumber/messages/message/deserialization.rb +0 -37
  74. data/lib/cucumber/messages/message/serialization.rb +0 -70
  75. data/lib/cucumber/messages/message/utils.rb +0 -45
  76. data/lib/cucumber/messages/ndjson_to_message_enumerator.rb +0 -21
  77. data/lib/cucumber/messages/time_conversion.rb +0 -33
  78. data/lib/cucumber/messages.deserializers.rb +0 -1208
  79. data/lib/cucumber/messages.dtos.rb +0 -1782
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6755e75e067d8b0f25a9923894792eae5f2cfed2fe7c190c31f7f613806c3e0c
4
- data.tar.gz: 710073dda292664e50cbc47b07eb43595a94733895d0f97f525f885964787ab4
3
+ metadata.gz: 5503bb8b808557151373a4c743bb3c2505045ee76eb90ecb89024910a6716fa3
4
+ data.tar.gz: 85161d88c9aed19bb5079b65c19c64b0e095dd498d5c165f07f459e9a530bf5c
5
5
  SHA512:
6
- metadata.gz: 79185a41d5bb609f905bcd5d82deda311655e700b5d4abc45e8bd3a301bd15d4e62dfb9ea88ef55adf8e962a90930238b34844cccff287f4581ee49eda3427bd
7
- data.tar.gz: b0da332b0a5793e20509b51072ca81e4b12abfa901a8c1c2876e592f537db603c28194d422520b1a0c40c360d68ac7dd2f74e04b5534060bd1b2de20da56d7a8
6
+ metadata.gz: 3d44796653824c23b69f9b492a78991c265335ac245e4f919f89fa80bd30a9c3d695ab7b2c23a187378310c21497cbaad642c5678c8df5d2309afcd339a4794d
7
+ data.tar.gz: 5b5bfa76bec9f68083a8027ecd3124bf31604d8e1cb13c468fca8a334cd3466dc7793c97a23d4f34360ed3b367da5269cc179207fa610f43728606f19df6b3ec
data/VERSION CHANGED
@@ -1 +1 @@
1
- 24.1.0
1
+ 25.0.0
@@ -0,0 +1,126 @@
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 Attachment message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ #
10
+ # //// Attachments (parse errors, execution errors, screenshots, links...)
11
+ #
12
+ # *
13
+ # An attachment represents any kind of data associated with a line in a
14
+ # [Source](#io.cucumber.messages.Source) file. It can be used for:
15
+ #
16
+ # * Syntax errors during parse time
17
+ # * Screenshots captured and attached during execution
18
+ # * Logs captured and attached during execution
19
+ #
20
+ # It is not to be used for runtime errors raised/thrown during execution. This
21
+ # is captured in `TestResult`.
22
+ ##
23
+ class Attachment < Message
24
+ ##
25
+ # *
26
+ # The body of the attachment. If `contentEncoding` is `IDENTITY`, the attachment
27
+ # is simply the string. If it's `BASE64`, the string should be Base64 decoded to
28
+ # obtain the attachment.
29
+ ##
30
+ attr_reader :body
31
+
32
+ ##
33
+ # *
34
+ # Whether to interpret `body` "as-is" (IDENTITY) or if it needs to be Base64-decoded (BASE64).
35
+ #
36
+ # Content encoding is *not* determined by the media type, but rather by the type
37
+ # of the object being attached:
38
+ #
39
+ # - string: IDENTITY
40
+ # - byte array: BASE64
41
+ # - stream: BASE64
42
+ ##
43
+ attr_reader :content_encoding
44
+
45
+ ##
46
+ # *
47
+ # Suggested file name of the attachment. (Provided by the user as an argument to `attach`)
48
+ ##
49
+ attr_reader :file_name
50
+
51
+ ##
52
+ # *
53
+ # The media type of the data. This can be any valid
54
+ # [IANA Media Type](https://www.iana.org/assignments/media-types/media-types.xhtml)
55
+ # as well as Cucumber-specific media types such as `text/x.cucumber.gherkin+plain`
56
+ # and `text/x.cucumber.stacktrace+plain`
57
+ ##
58
+ attr_reader :media_type
59
+
60
+ attr_reader :source
61
+
62
+ attr_reader :test_case_started_id
63
+
64
+ attr_reader :test_step_id
65
+
66
+ ##
67
+ # *
68
+ # A URL where the attachment can be retrieved. This field should not be set by Cucumber.
69
+ # It should be set by a program that reads a message stream and does the following for
70
+ # each Attachment message:
71
+ #
72
+ # - Writes the body (after base64 decoding if necessary) to a new file.
73
+ # - Sets `body` and `contentEncoding` to `null`
74
+ # - Writes out the new attachment message
75
+ #
76
+ # This will result in a smaller message stream, which can improve performance and
77
+ # reduce bandwidth of message consumers. It also makes it easier to process and download attachments
78
+ # separately from reports.
79
+ ##
80
+ attr_reader :url
81
+
82
+ def initialize(
83
+ body: '',
84
+ content_encoding: AttachmentContentEncoding::IDENTITY,
85
+ file_name: nil,
86
+ media_type: '',
87
+ source: nil,
88
+ test_case_started_id: nil,
89
+ test_step_id: nil,
90
+ url: nil
91
+ )
92
+ @body = body
93
+ @content_encoding = content_encoding
94
+ @file_name = file_name
95
+ @media_type = media_type
96
+ @source = source
97
+ @test_case_started_id = test_case_started_id
98
+ @test_step_id = test_step_id
99
+ @url = url
100
+ super()
101
+ end
102
+
103
+ ##
104
+ # Returns a new Attachment from the given hash.
105
+ # If the hash keys are camelCased, they are properly assigned to the
106
+ # corresponding snake_cased attributes.
107
+ #
108
+ # Cucumber::Messages::Attachment.from_h(some_hash) # => #<Cucumber::Messages::Attachment:0x... ...>
109
+ ##
110
+ def self.from_h(hash)
111
+ return nil if hash.nil?
112
+
113
+ new(
114
+ body: hash[:body],
115
+ content_encoding: hash[:contentEncoding],
116
+ file_name: hash[:fileName],
117
+ media_type: hash[:mediaType],
118
+ source: Source.from_h(hash[:source]),
119
+ test_case_started_id: hash[:testCaseStartedId],
120
+ test_step_id: hash[:testStepId],
121
+ url: hash[:url]
122
+ )
123
+ end
124
+ end
125
+ end
126
+ end
@@ -0,0 +1,11 @@
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
+ class AttachmentContentEncoding
7
+ IDENTITY = 'IDENTITY'
8
+ BASE64 = 'BASE64'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,64 @@
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 Background message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ ##
10
+ class Background < Message
11
+ ##
12
+ # The location of the `Background` keyword
13
+ ##
14
+ attr_reader :location
15
+
16
+ attr_reader :keyword
17
+
18
+ attr_reader :name
19
+
20
+ attr_reader :description
21
+
22
+ attr_reader :steps
23
+
24
+ attr_reader :id
25
+
26
+ def initialize(
27
+ location: Location.new,
28
+ keyword: '',
29
+ name: '',
30
+ description: '',
31
+ steps: [],
32
+ id: ''
33
+ )
34
+ @location = location
35
+ @keyword = keyword
36
+ @name = name
37
+ @description = description
38
+ @steps = steps
39
+ @id = id
40
+ super()
41
+ end
42
+
43
+ ##
44
+ # Returns a new Background from the given hash.
45
+ # If the hash keys are camelCased, they are properly assigned to the
46
+ # corresponding snake_cased attributes.
47
+ #
48
+ # Cucumber::Messages::Background.from_h(some_hash) # => #<Cucumber::Messages::Background:0x... ...>
49
+ ##
50
+ def self.from_h(hash)
51
+ return nil if hash.nil?
52
+
53
+ new(
54
+ location: Location.from_h(hash[:location]),
55
+ keyword: hash[:keyword],
56
+ name: hash[:name],
57
+ description: hash[:description],
58
+ steps: hash[:steps]&.map { |item| Step.from_h(item) },
59
+ id: hash[:id]
60
+ )
61
+ end
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,62 @@
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 Ci message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ #
10
+ # CI environment
11
+ ##
12
+ class Ci < Message
13
+ ##
14
+ # Name of the CI product, e.g. "Jenkins", "CircleCI" etc.
15
+ ##
16
+ attr_reader :name
17
+
18
+ ##
19
+ # Link to the build
20
+ ##
21
+ attr_reader :url
22
+
23
+ ##
24
+ # The build number. Some CI servers use non-numeric build numbers, which is why this is a string
25
+ ##
26
+ attr_reader :build_number
27
+
28
+ attr_reader :git
29
+
30
+ def initialize(
31
+ name: '',
32
+ url: nil,
33
+ build_number: nil,
34
+ git: nil
35
+ )
36
+ @name = name
37
+ @url = url
38
+ @build_number = build_number
39
+ @git = git
40
+ super()
41
+ end
42
+
43
+ ##
44
+ # Returns a new Ci from the given hash.
45
+ # If the hash keys are camelCased, they are properly assigned to the
46
+ # corresponding snake_cased attributes.
47
+ #
48
+ # Cucumber::Messages::Ci.from_h(some_hash) # => #<Cucumber::Messages::Ci:0x... ...>
49
+ ##
50
+ def self.from_h(hash)
51
+ return nil if hash.nil?
52
+
53
+ new(
54
+ name: hash[:name],
55
+ url: hash[:url],
56
+ build_number: hash[:buildNumber],
57
+ git: Git.from_h(hash[:git])
58
+ )
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,50 @@
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 Comment message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ #
10
+ # *
11
+ # A comment in a Gherkin document
12
+ ##
13
+ class Comment < Message
14
+ ##
15
+ # The location of the comment
16
+ ##
17
+ attr_reader :location
18
+
19
+ ##
20
+ # The text of the comment
21
+ ##
22
+ attr_reader :text
23
+
24
+ def initialize(
25
+ location: Location.new,
26
+ text: ''
27
+ )
28
+ @location = location
29
+ @text = text
30
+ super()
31
+ end
32
+
33
+ ##
34
+ # Returns a new Comment from the given hash.
35
+ # If the hash keys are camelCased, they are properly assigned to the
36
+ # corresponding snake_cased attributes.
37
+ #
38
+ # Cucumber::Messages::Comment.from_h(some_hash) # => #<Cucumber::Messages::Comment:0x... ...>
39
+ ##
40
+ def self.from_h(hash)
41
+ return nil if hash.nil?
42
+
43
+ new(
44
+ location: Location.from_h(hash[:location]),
45
+ text: hash[:text]
46
+ )
47
+ end
48
+ end
49
+ end
50
+ 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 DataTable message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ ##
10
+ class DataTable < Message
11
+ attr_reader :location
12
+
13
+ attr_reader :rows
14
+
15
+ def initialize(
16
+ location: Location.new,
17
+ rows: []
18
+ )
19
+ @location = location
20
+ @rows = rows
21
+ super()
22
+ end
23
+
24
+ ##
25
+ # Returns a new DataTable 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::DataTable.from_h(some_hash) # => #<Cucumber::Messages::DataTable:0x... ...>
30
+ ##
31
+ def self.from_h(hash)
32
+ return nil if hash.nil?
33
+
34
+ new(
35
+ location: Location.from_h(hash[:location]),
36
+ rows: hash[:rows]&.map { |item| TableRow.from_h(item) }
37
+ )
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,51 @@
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 DocString message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ ##
10
+ class DocString < Message
11
+ attr_reader :location
12
+
13
+ attr_reader :media_type
14
+
15
+ attr_reader :content
16
+
17
+ attr_reader :delimiter
18
+
19
+ def initialize(
20
+ location: Location.new,
21
+ media_type: nil,
22
+ content: '',
23
+ delimiter: ''
24
+ )
25
+ @location = location
26
+ @media_type = media_type
27
+ @content = content
28
+ @delimiter = delimiter
29
+ super()
30
+ end
31
+
32
+ ##
33
+ # Returns a new DocString from the given hash.
34
+ # If the hash keys are camelCased, they are properly assigned to the
35
+ # corresponding snake_cased attributes.
36
+ #
37
+ # Cucumber::Messages::DocString.from_h(some_hash) # => #<Cucumber::Messages::DocString:0x... ...>
38
+ ##
39
+ def self.from_h(hash)
40
+ return nil if hash.nil?
41
+
42
+ new(
43
+ location: Location.from_h(hash[:location]),
44
+ media_type: hash[:mediaType],
45
+ content: hash[:content],
46
+ delimiter: hash[:delimiter]
47
+ )
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,50 @@
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 Duration message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ #
10
+ # The structure is pretty close of the Timestamp one. For clarity, a second type
11
+ # of message is used.
12
+ ##
13
+ class Duration < Message
14
+ attr_reader :seconds
15
+
16
+ ##
17
+ # Non-negative fractions of a second at nanosecond resolution. Negative
18
+ # second values with fractions must still have non-negative nanos values
19
+ # that count forward in time. Must be from 0 to 999,999,999
20
+ # inclusive.
21
+ ##
22
+ attr_reader :nanos
23
+
24
+ def initialize(
25
+ seconds: 0,
26
+ nanos: 0
27
+ )
28
+ @seconds = seconds
29
+ @nanos = nanos
30
+ super()
31
+ end
32
+
33
+ ##
34
+ # Returns a new Duration from the given hash.
35
+ # If the hash keys are camelCased, they are properly assigned to the
36
+ # corresponding snake_cased attributes.
37
+ #
38
+ # Cucumber::Messages::Duration.from_h(some_hash) # => #<Cucumber::Messages::Duration:0x... ...>
39
+ ##
40
+ def self.from_h(hash)
41
+ return nil if hash.nil?
42
+
43
+ new(
44
+ seconds: hash[:seconds],
45
+ nanos: hash[:nanos]
46
+ )
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,124 @@
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 Envelope message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ #
10
+ # When removing a field, replace it with reserved, rather than deleting the line.
11
+ # When adding a field, add it to the end and increment the number by one.
12
+ # See https://developers.google.com/protocol-buffers/docs/proto#updating for details
13
+ #
14
+ # *
15
+ # All the messages that are passed between different components/processes are Envelope
16
+ # messages.
17
+ ##
18
+ class Envelope < Message
19
+ attr_reader :attachment
20
+
21
+ attr_reader :gherkin_document
22
+
23
+ attr_reader :hook
24
+
25
+ attr_reader :meta
26
+
27
+ attr_reader :parameter_type
28
+
29
+ attr_reader :parse_error
30
+
31
+ attr_reader :pickle
32
+
33
+ attr_reader :source
34
+
35
+ attr_reader :step_definition
36
+
37
+ attr_reader :test_case
38
+
39
+ attr_reader :test_case_finished
40
+
41
+ attr_reader :test_case_started
42
+
43
+ attr_reader :test_run_finished
44
+
45
+ attr_reader :test_run_started
46
+
47
+ attr_reader :test_step_finished
48
+
49
+ attr_reader :test_step_started
50
+
51
+ attr_reader :undefined_parameter_type
52
+
53
+ def initialize(
54
+ attachment: nil,
55
+ gherkin_document: nil,
56
+ hook: nil,
57
+ meta: nil,
58
+ parameter_type: nil,
59
+ parse_error: nil,
60
+ pickle: nil,
61
+ source: nil,
62
+ step_definition: nil,
63
+ test_case: nil,
64
+ test_case_finished: nil,
65
+ test_case_started: nil,
66
+ test_run_finished: nil,
67
+ test_run_started: nil,
68
+ test_step_finished: nil,
69
+ test_step_started: nil,
70
+ undefined_parameter_type: nil
71
+ )
72
+ @attachment = attachment
73
+ @gherkin_document = gherkin_document
74
+ @hook = hook
75
+ @meta = meta
76
+ @parameter_type = parameter_type
77
+ @parse_error = parse_error
78
+ @pickle = pickle
79
+ @source = source
80
+ @step_definition = step_definition
81
+ @test_case = test_case
82
+ @test_case_finished = test_case_finished
83
+ @test_case_started = test_case_started
84
+ @test_run_finished = test_run_finished
85
+ @test_run_started = test_run_started
86
+ @test_step_finished = test_step_finished
87
+ @test_step_started = test_step_started
88
+ @undefined_parameter_type = undefined_parameter_type
89
+ super()
90
+ end
91
+
92
+ ##
93
+ # Returns a new Envelope from the given hash.
94
+ # If the hash keys are camelCased, they are properly assigned to the
95
+ # corresponding snake_cased attributes.
96
+ #
97
+ # Cucumber::Messages::Envelope.from_h(some_hash) # => #<Cucumber::Messages::Envelope:0x... ...>
98
+ ##
99
+ def self.from_h(hash)
100
+ return nil if hash.nil?
101
+
102
+ new(
103
+ attachment: Attachment.from_h(hash[:attachment]),
104
+ gherkin_document: GherkinDocument.from_h(hash[:gherkinDocument]),
105
+ hook: Hook.from_h(hash[:hook]),
106
+ meta: Meta.from_h(hash[:meta]),
107
+ parameter_type: ParameterType.from_h(hash[:parameterType]),
108
+ parse_error: ParseError.from_h(hash[:parseError]),
109
+ pickle: Pickle.from_h(hash[:pickle]),
110
+ source: Source.from_h(hash[:source]),
111
+ step_definition: StepDefinition.from_h(hash[:stepDefinition]),
112
+ test_case: TestCase.from_h(hash[:testCase]),
113
+ test_case_finished: TestCaseFinished.from_h(hash[:testCaseFinished]),
114
+ test_case_started: TestCaseStarted.from_h(hash[:testCaseStarted]),
115
+ test_run_finished: TestRunFinished.from_h(hash[:testRunFinished]),
116
+ test_run_started: TestRunStarted.from_h(hash[:testRunStarted]),
117
+ test_step_finished: TestStepFinished.from_h(hash[:testStepFinished]),
118
+ test_step_started: TestStepStarted.from_h(hash[:testStepStarted]),
119
+ undefined_parameter_type: UndefinedParameterType.from_h(hash[:undefinedParameterType])
120
+ )
121
+ end
122
+ end
123
+ end
124
+ end
@@ -0,0 +1,74 @@
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 Examples message in Cucumber's {message protocol}[https://github.com/cucumber/messages].
8
+ ##
9
+ ##
10
+ class Examples < Message
11
+ ##
12
+ # The location of the `Examples` keyword
13
+ ##
14
+ attr_reader :location
15
+
16
+ attr_reader :tags
17
+
18
+ attr_reader :keyword
19
+
20
+ attr_reader :name
21
+
22
+ attr_reader :description
23
+
24
+ attr_reader :table_header
25
+
26
+ attr_reader :table_body
27
+
28
+ attr_reader :id
29
+
30
+ def initialize(
31
+ location: Location.new,
32
+ tags: [],
33
+ keyword: '',
34
+ name: '',
35
+ description: '',
36
+ table_header: nil,
37
+ table_body: [],
38
+ id: ''
39
+ )
40
+ @location = location
41
+ @tags = tags
42
+ @keyword = keyword
43
+ @name = name
44
+ @description = description
45
+ @table_header = table_header
46
+ @table_body = table_body
47
+ @id = id
48
+ super()
49
+ end
50
+
51
+ ##
52
+ # Returns a new Examples from the given hash.
53
+ # If the hash keys are camelCased, they are properly assigned to the
54
+ # corresponding snake_cased attributes.
55
+ #
56
+ # Cucumber::Messages::Examples.from_h(some_hash) # => #<Cucumber::Messages::Examples:0x... ...>
57
+ ##
58
+ def self.from_h(hash)
59
+ return nil if hash.nil?
60
+
61
+ new(
62
+ location: Location.from_h(hash[:location]),
63
+ tags: hash[:tags]&.map { |item| Tag.from_h(item) },
64
+ keyword: hash[:keyword],
65
+ name: hash[:name],
66
+ description: hash[:description],
67
+ table_header: TableRow.from_h(hash[:tableHeader]),
68
+ table_body: hash[:tableBody]&.map { |item| TableRow.from_h(item) },
69
+ id: hash[:id]
70
+ )
71
+ end
72
+ end
73
+ end
74
+ end