gherkin 8.2.1 → 9.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: febbe75fb7b4a0b1dad916d53ba8e16953b4e49b5c8b6e0d7dc55e4bd5bb2182
4
- data.tar.gz: b0c6d742f803f96c4ab04e2e9d7a6f17b0c72c3166dae18f812d17730f53e473
3
+ metadata.gz: 9fed72d45d24c5932634aa88d0b4fc260d407989b45875e340e28f21eab073a1
4
+ data.tar.gz: 9494dc078667ebba46fa354eba291d8fa2437ea1e68954835190d9989d2950eb
5
5
  SHA512:
6
- metadata.gz: 117041fe3c8799de6a2d7ce6e60623b63ac8bba03e9de286b952001c2582f67ecef187a5a30837db7fa20e9bd6b468d0f4cb458e13d99cc18ce6623a54343456
7
- data.tar.gz: e7e08085ce274f049f7d16f5e0db9cb64f919f528a71549dad975744e87b4c6e560c5d26b8fe81f810952ce220863cfefd3ab6907d4e8e4fb41f373a570d48b9
6
+ metadata.gz: c97ce1a4436c38a6bfc214f62595e93d809013ea7ab99698b9adb43907635385a01b68e12c5c077242ec74abfef00503a6b5f0e82bff34267d220eccac7d910f
7
+ data.tar.gz: 928daf1069cc5bfeaa8b1c14a11fa273c4b9d366402cbed9e8daa2502a50a9cc412a0255554588733f17bef00aa6a1d31ffbd4855aa76b74b4ab4d725d7f388b
@@ -12,7 +12,7 @@ options = {
12
12
  include_source: true,
13
13
  include_gherkin_document: true,
14
14
  include_pickles: true,
15
- json: false,
15
+ format: 'protobuf',
16
16
  predictable_ids: false
17
17
  }
18
18
 
@@ -26,8 +26,8 @@ OptionParser.new do |opts|
26
26
  opts.on("--[no-]pickles", "Don't print pickle messages") do |v|
27
27
  options[:include_pickles] = v
28
28
  end
29
- opts.on("--json", "Print messages as JSON") do |v|
30
- options[:json] = v
29
+ opts.on("--format ndjson|protobuf", "Output format") do |v|
30
+ options[:format] = v
31
31
  end
32
32
  opts.on("--predictable-ids", "Generate incrementing ids rather than UUIDs") do |v|
33
33
  options[:predictable_ids] = v
@@ -36,29 +36,12 @@ end.parse!
36
36
 
37
37
  def process_messages(messages, options)
38
38
  messages.each do |message|
39
- if options[:json]
40
- json = message.class.encode_json(message)
41
- ob = JSON.parse(json)
42
- remove_empties(ob)
43
- puts JSON.generate(ob)
44
- else
39
+ if options[:format] == 'ndjson'
40
+ message.write_ndjson_to(STDOUT)
41
+ elsif options[:format] == 'protobuf'
45
42
  message.write_delimited_to(STDOUT)
46
- end
47
- end
48
- end
49
-
50
- def remove_empties(ob)
51
- if Hash === ob
52
- ob.each do |key, value|
53
- if value == []
54
- ob.delete(key)
55
- else
56
- remove_empties(value)
57
- end
58
- end
59
- elsif Array === ob
60
- ob.each do |value|
61
- remove_empties(value)
43
+ else
44
+ raise "Unsupported format: #{options[:format]}"
62
45
  end
63
46
  end
64
47
  end
@@ -66,7 +49,7 @@ end
66
49
  gherkin_executable = ENV['GHERKIN_EXECUTABLE']
67
50
  if ARGV.empty?
68
51
  # Read protobuf from STDIN
69
- messages = Cucumber::Messages::ProtobufIoEnumerator.call(STDIN)
52
+ messages = Cucumber::Messages::BinaryToMessageEnumerator.new(STDIN)
70
53
  elsif gherkin_executable
71
54
  # Read protobuf from STDIN
72
55
  messages = Gherkin::Stream::SubprocessMessageStream.new(
@@ -1,10 +1,9 @@
1
1
  require 'cucumber/messages'
2
2
  require 'gherkin/ast_node'
3
- require 'gherkin/id_generator'
4
3
 
5
4
  module Gherkin
6
5
  class AstBuilder
7
- def initialize(id_generator = Gherkin::IdGenerator::UUID.new)
6
+ def initialize(id_generator)
8
7
  @id_generator = id_generator
9
8
  reset
10
9
  end
@@ -1,10 +1,7 @@
1
- require 'cucumber/messages'
2
- require 'gherkin/id_generator'
3
-
4
1
  module Gherkin
5
2
  module Pickles
6
3
  class Compiler
7
- def initialize(id_generator = Gherkin::IdGenerator::UUID.new)
4
+ def initialize(id_generator)
8
5
  @id_generator = id_generator
9
6
  end
10
7
 
@@ -71,7 +68,7 @@ module Gherkin
71
68
  tags: pickle_tags(tags),
72
69
  name: scenario.name,
73
70
  language: language,
74
- sourceIds: [scenario.id],
71
+ ast_node_ids: [scenario.id],
75
72
  steps: steps
76
73
  )
77
74
  pickles.push(pickle)
@@ -97,7 +94,7 @@ module Gherkin
97
94
  language: language,
98
95
  steps: steps,
99
96
  tags: pickle_tags(tags),
100
- sourceIds: [
97
+ ast_node_ids: [
101
98
  scenario.id,
102
99
  values_row.id
103
100
  ],
@@ -130,11 +127,11 @@ module Gherkin
130
127
  value_cells = values_row ? values_row.cells : []
131
128
  props = {
132
129
  id: @id_generator.new_id,
133
- sourceIds: [step.id],
130
+ ast_node_ids: [step.id],
134
131
  text: interpolate(step.text, variable_cells, value_cells),
135
132
  }
136
133
  if values_row
137
- props[:sourceIds].push(values_row.id)
134
+ props[:ast_node_ids].push(values_row.id)
138
135
  end
139
136
 
140
137
  if step.data_table
@@ -171,7 +168,7 @@ module Gherkin
171
168
  content: interpolate(doc_string.content, variable_cells, value_cells)
172
169
  }
173
170
  if doc_string.content_type
174
- props[:contentType] = interpolate(doc_string.content_type, variable_cells, value_cells)
171
+ props[:content_type] = interpolate(doc_string.content_type, variable_cells, value_cells)
175
172
  end
176
173
  Cucumber::Messages::PickleStepArgument::PickleDocString.new(props)
177
174
  end
@@ -183,7 +180,7 @@ module Gherkin
183
180
  def pickle_tag(tag)
184
181
  Cucumber::Messages::Pickle::PickleTag.new(
185
182
  name: tag.name,
186
- sourceId: tag.id
183
+ ast_node_id: tag.id
187
184
  )
188
185
  end
189
186
  end
@@ -2,7 +2,6 @@ require 'cucumber/messages'
2
2
  require 'gherkin/parser'
3
3
  require 'gherkin/token_matcher'
4
4
  require 'gherkin/pickles/compiler'
5
- require 'gherkin/id_generator'
6
5
 
7
6
  module Gherkin
8
7
  module Stream
@@ -17,10 +16,6 @@ module Gherkin
17
16
  @compiler = Pickles::Compiler.new(id_generator)
18
17
  end
19
18
 
20
- def id_generator_class
21
- @options[:predictable_ids] ? Gherkin::IdGenerator::Incrementing : Gherkin::IdGenerator::UUID
22
- end
23
-
24
19
  def messages
25
20
  Enumerator.new do |y|
26
21
  sources.each do |source|
@@ -30,7 +25,7 @@ module Gherkin
30
25
 
31
26
  if @options[:include_gherkin_document]
32
27
  gherkin_document = build_gherkin_document(source)
33
- y.yield(Cucumber::Messages::Envelope.new(gherkinDocument: gherkin_document))
28
+ y.yield(Cucumber::Messages::Envelope.new(gherkin_document: gherkin_document))
34
29
  end
35
30
  if @options[:include_pickles]
36
31
  gherkin_document ||= build_gherkin_document(source)
@@ -50,6 +45,10 @@ module Gherkin
50
45
 
51
46
  private
52
47
 
48
+ def id_generator_class
49
+ @options[:predictable_ids] ? Cucumber::Messages::IdGenerator::Incrementing : Cucumber::Messages::IdGenerator::UUID
50
+ end
51
+
53
52
  def yield_error_attachments(y, errors, uri)
54
53
  errors.each do |err|
55
54
  attachment = Cucumber::Messages::Attachment.new(
@@ -19,7 +19,7 @@ module Gherkin
19
19
  error = stderr.read
20
20
  raise error
21
21
  end
22
- Cucumber::Messages::ProtobufIoEnumerator.call(stdout)
22
+ Cucumber::Messages::BinaryToMessageEnumerator.new(stdout)
23
23
  end
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gherkin
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.2.1
4
+ version: 9.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gáspár Nagy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-11-22 00:00:00.000000000 Z
13
+ date: 2019-12-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: cucumber-messages
@@ -18,20 +18,20 @@ dependencies:
18
18
  requirements:
19
19
  - - "~>"
20
20
  - !ruby/object:Gem::Version
21
- version: '7.0'
21
+ version: '8.0'
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: 7.0.0
24
+ version: 8.0.0
25
25
  type: :runtime
26
26
  prerelease: false
27
27
  version_requirements: !ruby/object:Gem::Requirement
28
28
  requirements:
29
29
  - - "~>"
30
30
  - !ruby/object:Gem::Version
31
- version: '7.0'
31
+ version: '8.0'
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 7.0.0
34
+ version: 8.0.0
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rake
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -111,7 +111,6 @@ files:
111
111
  - lib/gherkin/errors.rb
112
112
  - lib/gherkin/gherkin-languages.json
113
113
  - lib/gherkin/gherkin_line.rb
114
- - lib/gherkin/id_generator.rb
115
114
  - lib/gherkin/parser.rb
116
115
  - lib/gherkin/pickles/compiler.rb
117
116
  - lib/gherkin/stream/parser_message_stream.rb
@@ -124,7 +123,6 @@ files:
124
123
  - spec/coverage.rb
125
124
  - spec/gherkin/dialect_spec.rb
126
125
  - spec/gherkin/gherkin_spec.rb
127
- - spec/gherkin/id_generator_spec.rb
128
126
  - spec/gherkin/stream/subprocess_message_stream_spec.rb
129
127
  homepage: https://github.com/cucumber/gherkin-ruby
130
128
  licenses:
@@ -155,11 +153,10 @@ rubyforge_project:
155
153
  rubygems_version: 2.7.6.2
156
154
  signing_key:
157
155
  specification_version: 4
158
- summary: gherkin-8.2.1
156
+ summary: gherkin-9.0.0
159
157
  test_files:
160
158
  - spec/gherkin/dialect_spec.rb
161
159
  - spec/gherkin/stream/subprocess_message_stream_spec.rb
162
- - spec/gherkin/id_generator_spec.rb
163
160
  - spec/gherkin/gherkin_spec.rb
164
161
  - spec/capture_warnings.rb
165
162
  - spec/coverage.rb
@@ -1,22 +0,0 @@
1
- require 'securerandom'
2
-
3
- module Gherkin
4
- module IdGenerator
5
- class Incrementing
6
- def initialize
7
- @index = -1
8
- end
9
-
10
- def new_id
11
- @index += 1
12
- @index.to_s
13
- end
14
- end
15
-
16
- class UUID
17
- def new_id
18
- SecureRandom.uuid
19
- end
20
- end
21
- end
22
- end
@@ -1,29 +0,0 @@
1
- require 'rspec'
2
- require 'gherkin/id_generator'
3
-
4
- describe Gherkin::IdGenerator::Incrementing do
5
- subject { Gherkin::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 Gherkin::IdGenerator::UUID do
21
- subject { Gherkin::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