cucumber-gherkin 18.1.1 → 20.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.
@@ -84,9 +84,9 @@ module Gherkin
84
84
  steps = scenario.steps.empty? ? [] : [].concat(pickle_steps(background_steps))
85
85
  tags = [].concat(inherited_tags).concat(scenario.tags).concat(examples.tags)
86
86
 
87
- scenario.steps.each do |scenario_outline_step|
88
- step_props = pickle_step_props(scenario_outline_step, variable_cells, values_row)
89
- steps.push(Cucumber::Messages::Pickle::PickleStep.new(step_props))
87
+ scenario.steps.each do |scenario_step|
88
+ step_props = pickle_step_props(scenario_step, variable_cells, values_row)
89
+ steps.push(Cucumber::Messages::PickleStep.new(**step_props))
90
90
  end
91
91
 
92
92
  pickle = Cucumber::Messages::Pickle.new(
@@ -99,7 +99,7 @@ module Gherkin
99
99
  ast_node_ids: [
100
100
  scenario.id,
101
101
  values_row.id
102
- ],
102
+ ]
103
103
  )
104
104
  pickles.push(pickle)
105
105
 
@@ -122,7 +122,7 @@ module Gherkin
122
122
  end
123
123
 
124
124
  def pickle_step(step)
125
- Cucumber::Messages::Pickle::PickleStep.new(pickle_step_props(step, [], nil))
125
+ Cucumber::Messages::PickleStep.new(**pickle_step_props(step, [], nil))
126
126
  end
127
127
 
128
128
  def pickle_step_props(step, variable_cells, values_row)
@@ -152,11 +152,11 @@ module Gherkin
152
152
  end
153
153
 
154
154
  def pickle_data_table(data_table, variable_cells, value_cells)
155
- Cucumber::Messages::PickleStepArgument::PickleTable.new(
155
+ Cucumber::Messages::PickleTable.new(
156
156
  rows: data_table.rows.map do |row|
157
- Cucumber::Messages::PickleStepArgument::PickleTable::PickleTableRow.new(
157
+ Cucumber::Messages::PickleTableRow.new(
158
158
  cells: row.cells.map do |cell|
159
- Cucumber::Messages::PickleStepArgument::PickleTable::PickleTableRow::PickleTableCell.new(
159
+ Cucumber::Messages::PickleTableCell.new(
160
160
  value: interpolate(cell.value, variable_cells, value_cells)
161
161
  )
162
162
  end
@@ -172,7 +172,7 @@ module Gherkin
172
172
  if doc_string.media_type
173
173
  props[:media_type] = interpolate(doc_string.media_type, variable_cells, value_cells)
174
174
  end
175
- Cucumber::Messages::PickleStepArgument::PickleDocString.new(props)
175
+ Cucumber::Messages::PickleDocString.new(**props)
176
176
  end
177
177
 
178
178
  def pickle_tags(tags)
@@ -180,7 +180,7 @@ module Gherkin
180
180
  end
181
181
 
182
182
  def pickle_tag(tag)
183
- Cucumber::Messages::Pickle::PickleTag.new(
183
+ Cucumber::Messages::PickleTag.new(
184
184
  name: tag.name,
185
185
  ast_node_id: tag.id
186
186
  )
data/lib/gherkin/query.rb CHANGED
@@ -27,6 +27,9 @@ module Gherkin
27
27
  end
28
28
 
29
29
  def update_rule(rule)
30
+ return if rule.nil?
31
+ store_nodes_location(rule.tags)
32
+
30
33
  rule.children.each do |child|
31
34
  update_background(child.background) if child.background
32
35
  update_scenario(child.scenario) if child.scenario
@@ -42,8 +45,8 @@ module Gherkin
42
45
  store_nodes_location(scenario.tags)
43
46
  update_steps(scenario.steps)
44
47
  scenario.examples.each do |examples|
45
- store_nodes_location(examples.tags)
46
- store_nodes_location(examples.table_body)
48
+ store_nodes_location(examples.tags || [])
49
+ store_nodes_location(examples.table_body || [])
47
50
  end
48
51
  end
49
52
 
@@ -88,8 +88,11 @@ module Gherkin
88
88
  else
89
89
  gd = @parser.parse(source.data)
90
90
  end
91
- gd[:uri] = source.uri
92
- Cucumber::Messages::GherkinDocument.new(gd)
91
+ Cucumber::Messages::GherkinDocument.new(
92
+ uri: source.uri,
93
+ feature: gd.feature,
94
+ comments: gd.comments
95
+ )
93
96
  end
94
97
  end
95
98
  end
@@ -25,7 +25,7 @@ module Gherkin
25
25
  end
26
26
 
27
27
  def read
28
- location = {line: @line_number += 1, column: 0}
28
+ location = {line: @line_number += 1}
29
29
  if @io.nil? || line = @io.gets
30
30
  gherkin_line = line ? GherkinLine.new(line, location[:line]) : nil
31
31
  Token.new(gherkin_line, location)
@@ -3,7 +3,7 @@ require 'gherkin'
3
3
  require 'gherkin/query'
4
4
 
5
5
  describe Gherkin::Query do
6
- let(:subject) { Gherkin::Query.new() }
6
+ let(:subject) { Gherkin::Query.new }
7
7
 
8
8
  def filter_messages_by_attribute(messages, attribute)
9
9
  messages.map do |message|
@@ -18,7 +18,7 @@ describe Gherkin::Query do
18
18
 
19
19
  let(:gherkin_document) { find_message_by_attribute(messages, :gherkin_document) }
20
20
 
21
- let(:messages) {
21
+ let(:messages) do
22
22
  Gherkin.from_source(
23
23
  "some/path",
24
24
  feature_content,
@@ -26,9 +26,9 @@ describe Gherkin::Query do
26
26
  include_gherkin_document: true
27
27
  }
28
28
  ).to_a
29
- }
29
+ end
30
30
 
31
- let(:feature_content) {
31
+ let(:feature_content) do
32
32
  """
33
33
  @feature-tag
34
34
  Feature: my feature
@@ -43,12 +43,12 @@ describe Gherkin::Query do
43
43
  Scenario Outline: with examples
44
44
  Given a <Status> step
45
45
 
46
- @example-tag
46
+ @examples-tag
47
47
  Examples:
48
48
  | Status |
49
49
  | passed |
50
50
 
51
-
51
+ @rule-tag
52
52
  Rule: this is a rule
53
53
  Background:
54
54
  Given the passed step in the rule background
@@ -56,31 +56,28 @@ describe Gherkin::Query do
56
56
  @ruled-scenario-tag
57
57
  Scenario: a ruled scenario
58
58
  Given a step in the ruled scenario
59
- """
60
- }
59
+ """
60
+ end
61
61
 
62
- context '#update' do
62
+ describe '#update' do
63
63
  context 'when the feature file is empty' do
64
64
  let(:feature_content) { '' }
65
65
 
66
66
  it 'does not fail' do
67
- expect {
68
- messages.each { |message|
69
- subject.update(message)
70
- }
71
- }.not_to raise_exception
67
+ expect do
68
+ messages.each { |message| subject.update(message) }
69
+ end.not_to raise_exception
72
70
  end
73
71
  end
74
72
  end
75
73
 
76
- context '#location' do
74
+ describe '#location' do
77
75
  before do
78
- messages.each { |message|
79
- subject.update(message)
80
- }
76
+ messages.each { |message| subject.update(message) }
81
77
  end
82
78
 
83
79
  let(:background) { find_message_by_attribute(gherkin_document.feature.children, :background) }
80
+ let(:rule) { find_message_by_attribute(gherkin_document.feature.children, :rule) }
84
81
  let(:scenarios) { filter_messages_by_attribute(gherkin_document.feature.children, :scenario) }
85
82
  let(:scenario) { scenarios.first }
86
83
 
@@ -112,8 +109,9 @@ describe Gherkin::Query do
112
109
 
113
110
  context 'when querying tags' do
114
111
  let(:feature_tag) { gherkin_document.feature.tags.first }
112
+ let(:rule_tag) { rule.tags.first }
115
113
  let(:scenario_tag) { scenario.tags.first }
116
- let(:example_tag) { scenarios.last.examples.first.tags.first }
114
+ let(:examples_tag) { scenarios.last.examples.first.tags.first }
117
115
 
118
116
  it 'provides the location of a feature tags' do
119
117
  expect(subject.location(feature_tag.id)).to eq(feature_tag.location)
@@ -123,13 +121,16 @@ describe Gherkin::Query do
123
121
  expect(subject.location(scenario_tag.id)).to eq(scenario_tag.location)
124
122
  end
125
123
 
126
- it 'provides the location of a scenario example tags' do
127
- expect(subject.location(example_tag.id)).to eq(example_tag.location)
124
+ it 'provides the location of scenario examples tags' do
125
+ expect(subject.location(examples_tag.id)).to eq(examples_tag.location)
126
+ end
127
+
128
+ it 'provides the location of a rule tag' do
129
+ expect(subject.location(rule_tag.id)).to eq(rule_tag.location)
128
130
  end
129
131
  end
130
132
 
131
133
  context 'when children are scoped in a Rule' do
132
- let(:rule) { find_message_by_attribute(gherkin_document.feature.children, :rule) }
133
134
  let(:rule_background) { find_message_by_attribute(rule.children, :background) }
134
135
  let(:rule_background_step) { rule_background.steps.first }
135
136
  let(:rule_scenario) { find_message_by_attribute(rule.children, :scenario) }
@@ -153,4 +154,4 @@ describe Gherkin::Query do
153
154
  end
154
155
  end
155
156
  end
156
- end
157
+ end
@@ -11,11 +11,11 @@ module Gherkin
11
11
  }
12
12
 
13
13
  let(:source_feature) {
14
- Cucumber::Messages::Source.new({
14
+ Cucumber::Messages::Source.new(
15
15
  uri: '//whatever/uri',
16
16
  data: feature_content,
17
17
  media_type: 'text/x.cucumber.gherkin+plain'
18
- })
18
+ )
19
19
  }
20
20
 
21
21
  let(:options) {
@@ -64,4 +64,4 @@ module Gherkin
64
64
  end
65
65
  end
66
66
  end
67
- end
67
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cucumber-gherkin
3
3
  version: !ruby/object:Gem::Version
4
- version: 18.1.1
4
+ version: 20.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: 2021-04-22 00:00:00.000000000 Z
13
+ date: 2021-07-08 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: '15.0'
21
+ version: '17.0'
22
22
  - - ">="
23
23
  - !ruby/object:Gem::Version
24
- version: 15.0.0
24
+ version: 17.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: '15.0'
31
+ version: '17.0'
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 15.0.0
34
+ version: 17.0.0
35
35
  - !ruby/object:Gem::Dependency
36
36
  name: rake
37
37
  requirement: !ruby/object:Gem::Requirement
@@ -41,7 +41,7 @@ dependencies:
41
41
  version: '13.0'
42
42
  - - ">="
43
43
  - !ruby/object:Gem::Version
44
- version: 13.0.3
44
+ version: 13.0.5
45
45
  type: :development
46
46
  prerelease: false
47
47
  version_requirements: !ruby/object:Gem::Requirement
@@ -51,7 +51,7 @@ dependencies:
51
51
  version: '13.0'
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: 13.0.3
54
+ version: 13.0.5
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -95,7 +95,6 @@ files:
95
95
  - lib/gherkin/pickles/compiler.rb
96
96
  - lib/gherkin/query.rb
97
97
  - lib/gherkin/stream/parser_message_stream.rb
98
- - lib/gherkin/stream/subprocess_message_stream.rb
99
98
  - lib/gherkin/token.rb
100
99
  - lib/gherkin/token_formatter_builder.rb
101
100
  - lib/gherkin/token_matcher.rb
@@ -107,16 +106,15 @@ files:
107
106
  - spec/gherkin/parser_spec.rb
108
107
  - spec/gherkin/query_spec.rb
109
108
  - spec/gherkin/stream/parser_message_stream_spec.rb
110
- - spec/gherkin/stream/subprocess_message_stream_spec.rb
111
109
  homepage: https://github.com/cucumber/gherkin-ruby
112
110
  licenses:
113
111
  - MIT
114
112
  metadata:
115
113
  bug_tracker_uri: https://github.com/cucumber/cucumber/issues
116
- changelog_uri: https://github.com/cucumber/cucumber/blob/master/gherkin/CHANGELOG.md
114
+ changelog_uri: https://github.com/cucumber/common/blob/main/gherkin/CHANGELOG.md
117
115
  documentation_uri: https://cucumber.io/docs/gherkin/
118
116
  mailing_list_uri: https://groups.google.com/forum/#!forum/cukes
119
- source_code_uri: https://github.com/cucumber/cucumber/blob/master/gherkin/ruby
117
+ source_code_uri: https://github.com/cucumber/common/blob/main/gherkin/ruby
120
118
  post_install_message:
121
119
  rdoc_options:
122
120
  - "--charset=UTF-8"
@@ -136,13 +134,12 @@ requirements: []
136
134
  rubygems_version: 3.1.2
137
135
  signing_key:
138
136
  specification_version: 4
139
- summary: cucumber-gherkin-18.1.1
137
+ summary: cucumber-gherkin-20.0.0
140
138
  test_files:
141
139
  - spec/capture_warnings.rb
142
140
  - spec/gherkin/gherkin_line_spec.rb
143
141
  - spec/gherkin/dialect_spec.rb
144
142
  - spec/gherkin/parser_spec.rb
145
143
  - spec/gherkin/stream/parser_message_stream_spec.rb
146
- - spec/gherkin/stream/subprocess_message_stream_spec.rb
147
144
  - spec/gherkin/query_spec.rb
148
145
  - spec/gherkin/gherkin_spec.rb
@@ -1,26 +0,0 @@
1
- require 'open3'
2
- require 'cucumber/messages'
3
-
4
- module Gherkin
5
- module Stream
6
- class SubprocessMessageStream
7
- def initialize(gherkin_executable, paths, print_source, print_ast, print_pickles)
8
- @gherkin_executable, @paths, @print_source, @print_ast, @print_pickles = gherkin_executable, paths, print_source, print_ast, print_pickles
9
- end
10
-
11
- def messages
12
- args = [@gherkin_executable]
13
- args.push('--no-source') unless @print_source
14
- args.push('--no-ast') unless @print_ast
15
- args.push('--no-pickles') unless @print_pickles
16
- args = args.concat(@paths)
17
- stdin, stdout, stderr, wait_thr = Open3.popen3(*args)
18
- if(stdout.eof?)
19
- error = stderr.read
20
- raise error
21
- end
22
- Cucumber::Messages::BinaryToMessageEnumerator.new(stdout)
23
- end
24
- end
25
- end
26
- end
@@ -1,18 +0,0 @@
1
- require 'rspec'
2
- require 'gherkin/stream/subprocess_message_stream'
3
-
4
- module Gherkin
5
- module Stream
6
- describe SubprocessMessageStream do
7
- it "works" do
8
- cucumber_messages = SubprocessMessageStream.new(
9
- "./bin/gherkin",
10
- ["testdata/good/minimal.feature"],
11
- true, true, true
12
- )
13
- messages = cucumber_messages.messages.to_a
14
- expect(messages.length).to eq(3)
15
- end
16
- end
17
- end
18
- end