gherkin 8.2.1 → 9.0.0

Sign up to get free protection for your applications and to get access to all the features.
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