cuke_modeler 3.13.0 → 3.16.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: b7e797a40be9122031fb1af313da9c05ded38167a525751135a27d711e901768
4
- data.tar.gz: 6f793fedb5971b37d0733ca53d997b6f334c2e51716dff9b9c0cc2000ecc9c03
3
+ metadata.gz: 6cd72d6cdcc97b1802563f6cef298f9efbf0fea704d395bb8bfa22f15a63ecbe
4
+ data.tar.gz: c884d7eb4ce70f5934cc9916d39602bfaf44be5e6c9ebd468614e5b3363a9511
5
5
  SHA512:
6
- metadata.gz: d1f6c8cbc8325af57aaae715afbfd12d96b279ae54a96ee0daedcb861f13fd10e662e0d350ef0139ab483c4423160844415fb7d0c7037c1e34e5fd498856a30f
7
- data.tar.gz: 41100c94a4eaedc6de3ef4d57c0aa1ba93abd962c149d24d3852184bf34c83470a5ed381111918d3eefeb17eba290d2d08241722cacf54b43c4ed5aeba51f12c
6
+ metadata.gz: 88d6ad6cee0150b534f2a4b69f5492f37b2c2f0b4e844f232c074ca9a31a51a6d437c4f38b191b34bf56bb31abc55d2ee514a5ceb9c281fafa0ffe11ce31243c
7
+ data.tar.gz: d0bbb9585f0040c9f20537d87b2761ec9ee06372bc5ad4e5b486e56e2a4990dd8b2189b7354ffe0ee593a7b9ad84e87eee1083cc37ccc91880785c7c3e7ce099
data/CHANGELOG.md CHANGED
@@ -8,6 +8,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8
8
 
9
9
  Nothing yet...
10
10
 
11
+ ## [3.16.0] - 2022-05-30
12
+
13
+ ### Added
14
+ - Support added for more versions of the `cucumber-gherkin` gem
15
+ - 23.x
16
+
17
+ ## [3.15.0] - 2021-11-27
18
+
19
+ ### Added
20
+ - The language of a feature (e.g. 'en', 'hi', 'zh-CN', etc.) is now a modeled attribute on `Feature` models.
21
+
22
+ ## [3.14.0] - 2021-11-22
23
+
24
+ ### Added
25
+ - All models for Gherkin elements now track the column number from which they originate in a source file.
26
+
11
27
  ## [3.13.0] - 2021-09-25
12
28
 
13
29
  ### Added
@@ -408,7 +424,10 @@ Nothing yet...
408
424
  - Initial release
409
425
 
410
426
 
411
- [Unreleased]: https://github.com/enkessler/cuke_modeler/compare/v3.13.0...HEAD
427
+ [Unreleased]: https://github.com/enkessler/cuke_modeler/compare/v3.16.0...HEAD
428
+ [3.16.0]: https://github.com/enkessler/cuke_modeler/compare/v3.15.0...v3.16.0
429
+ [3.15.0]: https://github.com/enkessler/cuke_modeler/compare/v3.14.0...v3.15.0
430
+ [3.14.0]: https://github.com/enkessler/cuke_modeler/compare/v3.13.0...v3.14.0
412
431
  [3.13.0]: https://github.com/enkessler/cuke_modeler/compare/v3.12.0...v3.13.0
413
432
  [3.12.0]: https://github.com/enkessler/cuke_modeler/compare/v3.11.0...v3.12.0
414
433
  [3.11.0]: https://github.com/enkessler/cuke_modeler/compare/v3.10.0...v3.11.0
data/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2014-2021 Eric Kessler, et al
1
+ Copyright (c) 2014-2022 Eric Kessler, et al
2
2
 
3
3
  MIT License
4
4
 
data/cuke_modeler.gemspec CHANGED
@@ -36,7 +36,7 @@ Gem::Specification.new do |spec|
36
36
 
37
37
  spec.required_ruby_version = '>= 2.3', '< 4.0'
38
38
 
39
- spec.add_runtime_dependency 'cucumber-gherkin', '< 23.0'
39
+ spec.add_runtime_dependency 'cucumber-gherkin', '< 24.0'
40
40
 
41
41
  spec.add_development_dependency 'bundler', '< 3.0'
42
42
  spec.add_development_dependency 'childprocess', '< 5.0'
@@ -35,10 +35,12 @@ module CukeModeler
35
35
  clear_child_elements(adapted_feature, [[:tags],
36
36
  [:children]])
37
37
 
38
+ adapted_feature['language'] = feature_ast.language
38
39
  adapted_feature['keyword'] = feature_ast.keyword
39
40
  adapted_feature['name'] = feature_ast.name
40
41
  adapted_feature['description'] = feature_ast.description
41
42
  adapted_feature['line'] = feature_ast.location.line
43
+ adapted_feature['column'] = feature_ast.location.column
42
44
 
43
45
  adapted_feature['elements'] = adapt_child_elements(feature_ast)
44
46
  adapted_feature['tags'] = adapt_tags(feature_ast)
@@ -59,6 +61,7 @@ module CukeModeler
59
61
  adapted_background['name'] = background_ast.background.name
60
62
  adapted_background['description'] = background_ast.background.description
61
63
  adapted_background['line'] = background_ast.background.location.line
64
+ adapted_background['column'] = background_ast.background.location.column
62
65
 
63
66
  adapted_background['steps'] = adapt_steps(background_ast.background)
64
67
 
@@ -79,6 +82,7 @@ module CukeModeler
79
82
  adapted_rule['name'] = rule_ast.rule.name
80
83
  adapted_rule['description'] = rule_ast.rule.description
81
84
  adapted_rule['line'] = rule_ast.rule.location.line
85
+ adapted_rule['column'] = rule_ast.rule.location.column
82
86
 
83
87
  adapted_rule['elements'] = adapt_child_elements(rule_ast.rule)
84
88
  adapted_rule['tags'] = adapt_tags(rule_ast.rule)
@@ -100,6 +104,7 @@ module CukeModeler
100
104
  adapted_scenario['name'] = test_ast.scenario.name
101
105
  adapted_scenario['description'] = test_ast.scenario.description
102
106
  adapted_scenario['line'] = test_ast.scenario.location.line
107
+ adapted_scenario['column'] = test_ast.scenario.location.column
103
108
 
104
109
  adapted_scenario['tags'] = adapt_tags(test_ast.scenario)
105
110
  adapted_scenario['steps'] = adapt_steps(test_ast.scenario)
@@ -122,6 +127,7 @@ module CukeModeler
122
127
  adapted_outline['name'] = test_ast.scenario.name
123
128
  adapted_outline['description'] = test_ast.scenario.description
124
129
  adapted_outline['line'] = test_ast.scenario.location.line
130
+ adapted_outline['column'] = test_ast.scenario.location.column
125
131
 
126
132
  adapted_outline['tags'] = adapt_tags(test_ast.scenario)
127
133
  adapted_outline['steps'] = adapt_steps(test_ast.scenario)
@@ -143,6 +149,7 @@ module CukeModeler
143
149
  adapted_example['keyword'] = example_ast.keyword
144
150
  adapted_example['name'] = example_ast.name
145
151
  adapted_example['line'] = example_ast.location.line
152
+ adapted_example['column'] = example_ast.location.column
146
153
  adapted_example['description'] = example_ast.description
147
154
 
148
155
  adapted_example['rows'] = []
@@ -166,6 +173,7 @@ module CukeModeler
166
173
 
167
174
  adapted_tag['name'] = tag_ast.name
168
175
  adapted_tag['line'] = tag_ast.location.line
176
+ adapted_tag['column'] = tag_ast.location.column
169
177
 
170
178
  adapted_tag
171
179
  end
@@ -179,6 +187,7 @@ module CukeModeler
179
187
 
180
188
  adapted_comment['text'] = comment_ast.text
181
189
  adapted_comment['line'] = comment_ast.location.line
190
+ adapted_comment['column'] = comment_ast.location.column
182
191
 
183
192
  adapted_comment
184
193
  end
@@ -195,6 +204,7 @@ module CukeModeler
195
204
  adapted_step['keyword'] = step_ast.keyword
196
205
  adapted_step['name'] = step_ast.text
197
206
  adapted_step['line'] = step_ast.location.line
207
+ adapted_step['column'] = step_ast.location.column
198
208
 
199
209
  if step_ast.doc_string
200
210
  adapted_step['doc_string'] = adapt_doc_string(step_ast.doc_string)
@@ -215,6 +225,7 @@ module CukeModeler
215
225
  adapted_doc_string['value'] = doc_string_ast.content
216
226
  adapted_doc_string['content_type'] = doc_string_ast.media_type
217
227
  adapted_doc_string['line'] = doc_string_ast.location.line
228
+ adapted_doc_string['column'] = doc_string_ast.location.column
218
229
 
219
230
  adapted_doc_string
220
231
  end
@@ -232,6 +243,7 @@ module CukeModeler
232
243
  adapted_step_table['rows'] << adapt_table_row(row)
233
244
  end
234
245
  adapted_step_table['line'] = step_table_ast.location.line
246
+ adapted_step_table['column'] = step_table_ast.location.column
235
247
 
236
248
  adapted_step_table
237
249
  end
@@ -245,6 +257,7 @@ module CukeModeler
245
257
  clear_child_elements(adapted_table_row, [[:cells]])
246
258
 
247
259
  adapted_table_row['line'] = table_row_ast.location.line
260
+ adapted_table_row['column'] = table_row_ast.location.column
248
261
 
249
262
  adapted_table_row['cells'] = []
250
263
  table_row_ast.cells.each do |row|
@@ -263,6 +276,7 @@ module CukeModeler
263
276
 
264
277
  adapted_cell['value'] = cell_ast.value
265
278
  adapted_cell['line'] = cell_ast.location.line
279
+ adapted_cell['column'] = cell_ast.location.column
266
280
 
267
281
  adapted_cell
268
282
  end
@@ -0,0 +1,13 @@
1
+ require_relative 'gherkin_20_adapter'
2
+
3
+
4
+ module CukeModeler
5
+
6
+ # NOT A PART OF THE PUBLIC API
7
+ # An adapter that can convert the output of version 23.x of the *cucumber-gherkin* gem into input that is consumable
8
+ # by this gem.
9
+
10
+ class Gherkin23Adapter < Gherkin20Adapter
11
+
12
+ end
13
+ end
@@ -36,10 +36,12 @@ module CukeModeler
36
36
  clear_child_elements(adapted_feature, [[:tags],
37
37
  [:children]])
38
38
 
39
+ adapted_feature['language'] = feature_ast[:language]
39
40
  adapted_feature['keyword'] = feature_ast[:keyword]
40
41
  adapted_feature['name'] = feature_ast[:name]
41
42
  adapted_feature['description'] = feature_ast[:description] || ''
42
43
  adapted_feature['line'] = feature_ast[:location][:line]
44
+ adapted_feature['column'] = feature_ast[:location][:column]
43
45
 
44
46
  adapted_feature['elements'] = adapt_child_elements(feature_ast)
45
47
  adapted_feature['tags'] = adapt_tags(feature_ast)
@@ -60,6 +62,7 @@ module CukeModeler
60
62
  adapted_background['name'] = background_ast[:background][:name]
61
63
  adapted_background['description'] = background_ast[:background][:description] || ''
62
64
  adapted_background['line'] = background_ast[:background][:location][:line]
65
+ adapted_background['column'] = background_ast[:background][:location][:column]
63
66
 
64
67
  adapted_background['steps'] = adapt_steps(background_ast[:background])
65
68
 
@@ -79,6 +82,7 @@ module CukeModeler
79
82
  adapted_rule['name'] = rule_ast[:rule][:name]
80
83
  adapted_rule['description'] = rule_ast[:rule][:description] || ''
81
84
  adapted_rule['line'] = rule_ast[:rule][:location][:line]
85
+ adapted_rule['column'] = rule_ast[:rule][:location][:column]
82
86
 
83
87
  adapted_rule['elements'] = adapt_child_elements(rule_ast[:rule])
84
88
 
@@ -99,6 +103,7 @@ module CukeModeler
99
103
  adapted_scenario['name'] = test_ast[:scenario][:name]
100
104
  adapted_scenario['description'] = test_ast[:scenario][:description] || ''
101
105
  adapted_scenario['line'] = test_ast[:scenario][:location][:line]
106
+ adapted_scenario['column'] = test_ast[:scenario][:location][:column]
102
107
 
103
108
  adapted_scenario['tags'] = adapt_tags(test_ast[:scenario])
104
109
  adapted_scenario['steps'] = adapt_steps(test_ast[:scenario])
@@ -121,6 +126,7 @@ module CukeModeler
121
126
  adapted_outline['name'] = test_ast[:scenario][:name]
122
127
  adapted_outline['description'] = test_ast[:scenario][:description] || ''
123
128
  adapted_outline['line'] = test_ast[:scenario][:location][:line]
129
+ adapted_outline['column'] = test_ast[:scenario][:location][:column]
124
130
 
125
131
  adapted_outline['tags'] = adapt_tags(test_ast[:scenario])
126
132
  adapted_outline['steps'] = adapt_steps(test_ast[:scenario])
@@ -142,6 +148,7 @@ module CukeModeler
142
148
  adapted_example['keyword'] = example_ast[:keyword]
143
149
  adapted_example['name'] = example_ast[:name]
144
150
  adapted_example['line'] = example_ast[:location][:line]
151
+ adapted_example['column'] = example_ast[:location][:column]
145
152
  adapted_example['description'] = example_ast[:description] || ''
146
153
 
147
154
  adapted_example['rows'] = []
@@ -165,6 +172,7 @@ module CukeModeler
165
172
 
166
173
  adapted_tag['name'] = tag_ast[:name]
167
174
  adapted_tag['line'] = tag_ast[:location][:line]
175
+ adapted_tag['column'] = tag_ast[:location][:column]
168
176
 
169
177
  adapted_tag
170
178
  end
@@ -178,6 +186,7 @@ module CukeModeler
178
186
 
179
187
  adapted_comment['text'] = comment_ast[:text]
180
188
  adapted_comment['line'] = comment_ast[:location][:line]
189
+ adapted_comment['column'] = comment_ast[:location][:column]
181
190
 
182
191
  adapted_comment
183
192
  end
@@ -194,6 +203,7 @@ module CukeModeler
194
203
  adapted_step['keyword'] = step_ast[:keyword]
195
204
  adapted_step['name'] = step_ast[:text]
196
205
  adapted_step['line'] = step_ast[:location][:line]
206
+ adapted_step['column'] = step_ast[:location][:column]
197
207
 
198
208
  if step_ast[:doc_string]
199
209
  adapted_step['doc_string'] = adapt_doc_string(step_ast[:doc_string])
@@ -214,6 +224,7 @@ module CukeModeler
214
224
  adapted_doc_string['value'] = doc_string_ast[:content]
215
225
  adapted_doc_string['content_type'] = doc_string_ast[:media_type]
216
226
  adapted_doc_string['line'] = doc_string_ast[:location][:line]
227
+ adapted_doc_string['column'] = doc_string_ast[:location][:column]
217
228
 
218
229
  adapted_doc_string
219
230
  end
@@ -231,6 +242,7 @@ module CukeModeler
231
242
  adapted_step_table['rows'] << adapt_table_row(row)
232
243
  end
233
244
  adapted_step_table['line'] = step_table_ast[:location][:line]
245
+ adapted_step_table['column'] = step_table_ast[:location][:column]
234
246
 
235
247
  adapted_step_table
236
248
  end
@@ -244,6 +256,7 @@ module CukeModeler
244
256
  clear_child_elements(adapted_table_row, [[:cells]])
245
257
 
246
258
  adapted_table_row['line'] = table_row_ast[:location][:line]
259
+ adapted_table_row['column'] = table_row_ast[:location][:column]
247
260
 
248
261
  adapted_table_row['cells'] = []
249
262
  table_row_ast[:cells].each do |row|
@@ -262,6 +275,7 @@ module CukeModeler
262
275
 
263
276
  adapted_cell['value'] = cell_ast[:value]
264
277
  adapted_cell['line'] = cell_ast[:location][:line]
278
+ adapted_cell['column'] = cell_ast[:location][:column]
265
279
 
266
280
  adapted_cell
267
281
  end
@@ -55,7 +55,7 @@ module CukeModeler
55
55
 
56
56
  def populate_scenario(scenario_object, parsed_scenario_data)
57
57
  populate_parsing_data(scenario_object, parsed_scenario_data)
58
- populate_source_line(scenario_object, parsed_scenario_data)
58
+ populate_source_location(scenario_object, parsed_scenario_data)
59
59
  populate_keyword(scenario_object, parsed_scenario_data)
60
60
  populate_name(scenario_object, parsed_scenario_data)
61
61
  populate_description(scenario_object, parsed_scenario_data)
@@ -65,7 +65,7 @@ module CukeModeler
65
65
 
66
66
  def populate_outline(outline_object, parsed_outline_data)
67
67
  populate_parsing_data(outline_object, parsed_outline_data)
68
- populate_source_line(outline_object, parsed_outline_data)
68
+ populate_source_location(outline_object, parsed_outline_data)
69
69
  populate_keyword(outline_object, parsed_outline_data)
70
70
  populate_name(outline_object, parsed_outline_data)
71
71
  populate_description(outline_object, parsed_outline_data)
@@ -79,7 +79,7 @@ module CukeModeler
79
79
  populate_keyword(background_object, parsed_background_data)
80
80
  populate_name(background_object, parsed_background_data)
81
81
  populate_description(background_object, parsed_background_data)
82
- populate_source_line(background_object, parsed_background_data)
82
+ populate_source_location(background_object, parsed_background_data)
83
83
  populate_steps(background_object, parsed_background_data)
84
84
  end
85
85
 
@@ -87,7 +87,7 @@ module CukeModeler
87
87
  populate_text(step_object, parsed_step_data)
88
88
  populate_block(step_object, parsed_step_data)
89
89
  populate_keyword(step_object, parsed_step_data)
90
- populate_source_line(step_object, parsed_step_data)
90
+ populate_source_location(step_object, parsed_step_data)
91
91
  populate_parsing_data(step_object, parsed_step_data)
92
92
  end
93
93
 
@@ -102,12 +102,12 @@ module CukeModeler
102
102
  def populate_table(table_object, parsed_table_data)
103
103
  populate_row_models(table_object, parsed_table_data)
104
104
  populate_parsing_data(table_object, parsed_table_data)
105
- populate_source_line(table_object, parsed_table_data)
105
+ populate_source_location(table_object, parsed_table_data)
106
106
  end
107
107
 
108
108
  def populate_cell(cell_object, parsed_cell_data)
109
109
  populate_cell_value(cell_object, parsed_cell_data)
110
- populate_source_line(cell_object, parsed_cell_data)
110
+ populate_source_location(cell_object, parsed_cell_data)
111
111
  populate_parsing_data(cell_object, parsed_cell_data)
112
112
  end
113
113
 
@@ -115,13 +115,13 @@ module CukeModeler
115
115
  populate_content_type(doc_string_object, parsed_doc_string_data)
116
116
  populate_content(doc_string_object, parsed_doc_string_data)
117
117
  populate_parsing_data(doc_string_object, parsed_doc_string_data)
118
- populate_source_line(doc_string_object, parsed_doc_string_data)
118
+ populate_source_location(doc_string_object, parsed_doc_string_data)
119
119
  end
120
120
 
121
121
  def populate_example(example_object, parsed_example_data)
122
122
  populate_parsing_data(example_object, parsed_example_data)
123
123
  populate_keyword(example_object, parsed_example_data)
124
- populate_source_line(example_object, parsed_example_data)
124
+ populate_source_location(example_object, parsed_example_data)
125
125
  populate_name(example_object, parsed_example_data)
126
126
  populate_description(example_object, parsed_example_data)
127
127
  populate_tags(example_object, parsed_example_data)
@@ -129,14 +129,15 @@ module CukeModeler
129
129
  end
130
130
 
131
131
  def populate_row(row_object, parsed_row_data)
132
- populate_source_line(row_object, parsed_row_data)
132
+ populate_source_location(row_object, parsed_row_data)
133
133
  populate_row_cells(row_object, parsed_row_data)
134
134
  populate_parsing_data(row_object, parsed_row_data)
135
135
  end
136
136
 
137
137
  def populate_feature(feature_object, parsed_feature_data)
138
138
  populate_parsing_data(feature_object, parsed_feature_data)
139
- populate_source_line(feature_object, parsed_feature_data)
139
+ populate_source_location(feature_object, parsed_feature_data)
140
+ populate_language(feature_object, parsed_feature_data)
140
141
  populate_keyword(feature_object, parsed_feature_data)
141
142
  populate_name(feature_object, parsed_feature_data)
142
143
  populate_description(feature_object, parsed_feature_data)
@@ -146,7 +147,7 @@ module CukeModeler
146
147
 
147
148
  def populate_rule(rule_object, parsed_rule_data)
148
149
  populate_parsing_data(rule_object, parsed_rule_data)
149
- populate_source_line(rule_object, parsed_rule_data)
150
+ populate_source_location(rule_object, parsed_rule_data)
150
151
  populate_keyword(rule_object, parsed_rule_data)
151
152
  populate_name(rule_object, parsed_rule_data)
152
153
  populate_description(rule_object, parsed_rule_data)
@@ -182,13 +183,17 @@ module CukeModeler
182
183
  def populate_tag(tag_object, processed_tag_data)
183
184
  populate_name(tag_object, processed_tag_data)
184
185
  populate_parsing_data(tag_object, processed_tag_data)
185
- populate_source_line(tag_object, processed_tag_data)
186
+ populate_source_location(tag_object, processed_tag_data)
186
187
  end
187
188
 
188
189
  def populate_comment(comment_object, processed_comment_data)
189
190
  populate_comment_text(comment_object, processed_comment_data)
190
191
  populate_parsing_data(comment_object, processed_comment_data)
191
- populate_source_line(comment_object, processed_comment_data)
192
+ populate_source_location(comment_object, processed_comment_data)
193
+ end
194
+
195
+ def populate_language(feature_model, parsed_feature_data)
196
+ feature_model.language = parsed_feature_data['language']
192
197
  end
193
198
 
194
199
  def populate_comment_text(comment_model, parsed_comment_data)
@@ -10,6 +10,9 @@ module CukeModeler
10
10
  include Sourceable
11
11
 
12
12
 
13
+ # The language for the feature
14
+ attr_accessor :language
15
+
13
16
  # The keyword for the feature
14
17
  attr_accessor :keyword
15
18
 
@@ -9,7 +9,7 @@ require 'gherkin'
9
9
  # an 'adapter' appropriate to the version of the *cucumber-gherkin* gem that has been activated.
10
10
  gherkin_version = Gem.loaded_specs['cucumber-gherkin'].version.version
11
11
  gherkin_major_version = gherkin_version.match(/^(\d+)\./)[1].to_i
12
- supported_gherkin_versions = (9..22)
12
+ supported_gherkin_versions = (9..23)
13
13
 
14
14
  raise("Unknown Gherkin version: '#{gherkin_version}'") unless supported_gherkin_versions.include?(gherkin_major_version)
15
15
 
@@ -63,7 +63,7 @@ module CukeModeler
63
63
  # inside of it, so I'm leaving this here in case it changes again
64
64
  # rubocop:disable Lint/DuplicateMethods
65
65
  case gherkin_major_version
66
- when 20, 21, 22
66
+ when 20, 21, 22, 23
67
67
  # TODO: make these methods private?
68
68
  # NOT A PART OF THE PUBLIC API
69
69
  # The method to use for parsing Gherkin text
@@ -152,8 +152,6 @@ module CukeModeler
152
152
 
153
153
  gherkin_ast_message[:gherkin_document]
154
154
  end
155
- else
156
- raise("Unknown Gherkin version: '#{gherkin_version}'")
157
155
  end
158
156
  # rubocop:enable Lint/DuplicateMethods
159
157
 
@@ -8,12 +8,15 @@ module CukeModeler
8
8
  # The line number where the element began in the source code
9
9
  attr_accessor :source_line
10
10
 
11
+ # The column number where the element began in the source code
12
+ attr_accessor :source_column
11
13
 
12
14
  private
13
15
 
14
16
 
15
- def populate_source_line(model, parsed_model_data)
17
+ def populate_source_location(model, parsed_model_data)
16
18
  model.source_line = parsed_model_data['line']
19
+ model.source_column = parsed_model_data['column']
17
20
  end
18
21
 
19
22
  end
@@ -1,4 +1,4 @@
1
1
  module CukeModeler
2
2
  # The gem version
3
- VERSION = '3.13.0'.freeze
3
+ VERSION = '3.16.0'.freeze
4
4
  end
@@ -23,21 +23,21 @@ Feature: Background modeling
23
23
  """
24
24
 
25
25
 
26
- Scenario: Modeling a backgrounds's keyword
26
+ Scenario: Modeling a background's keyword
27
27
  When the backgrounds's keyword is requested
28
28
  """
29
29
  @model.keyword
30
30
  """
31
31
  Then the model returns "Background"
32
32
 
33
- Scenario: Modeling a backgrounds's name
33
+ Scenario: Modeling a background's name
34
34
  When the background's name is requested
35
35
  """
36
36
  @model.name
37
37
  """
38
38
  Then the model returns "Some general test setup stuff."
39
39
 
40
- Scenario: Modeling a backgrounds's description
40
+ Scenario: Modeling a background's description
41
41
  When the background's description is requested
42
42
  """
43
43
  @model.description
@@ -50,7 +50,7 @@ Feature: Background modeling
50
50
  Even more.
51
51
  """
52
52
 
53
- Scenario: Modeling a backgrounds's steps
53
+ Scenario: Modeling a background's steps
54
54
  When the background's steps are requested
55
55
  """
56
56
  @model.steps
@@ -60,7 +60,7 @@ Feature: Background modeling
60
60
  | another setup step |
61
61
  | an action step |
62
62
 
63
- Scenario: Modeling a backgrounds's source line
63
+ Scenario: Modeling a background's source line
64
64
  Given the following gherkin:
65
65
  """
66
66
  Feature:
@@ -81,3 +81,26 @@ Feature: Background modeling
81
81
  @model.source_line
82
82
  """
83
83
  Then the model returns "3"
84
+
85
+ Scenario: Modeling a background's source column
86
+ Given the following gherkin:
87
+ """
88
+ Feature:
89
+
90
+
91
+ Background:
92
+ * a step
93
+ """
94
+ And a feature model based on that gherkin
95
+ """
96
+ @model = CukeModeler::Feature.new(<source_text>)
97
+ """
98
+ And the background model of that feature model
99
+ """
100
+ @model = @model.background
101
+ """
102
+ When the background's source column is requested
103
+ """
104
+ @model.source_column
105
+ """
106
+ Then the model returns "3"
@@ -20,3 +20,49 @@ Feature: Cell modeling
20
20
  @model.value
21
21
  """
22
22
  Then the model returns "foo"
23
+
24
+ Scenario: Modeling a cell's source line
25
+ Given the following gherkin:
26
+ """
27
+ Feature:
28
+
29
+ Scenario:
30
+ * a step
31
+ | foo |
32
+ """
33
+ And a feature model based on that gherkin
34
+ """
35
+ @model = CukeModeler::Feature.new(<source_text>)
36
+ """
37
+ And the cell model inside of that feature model
38
+ """
39
+ @model = @model.tests.first.steps.first.block.rows.first.cells.first
40
+ """
41
+ When the cell's source line is requested
42
+ """
43
+ @model.source_line
44
+ """
45
+ Then the model returns "5"
46
+
47
+ Scenario: Modeling a cell's source column
48
+ Given the following gherkin:
49
+ """
50
+ Feature:
51
+
52
+ Scenario:
53
+ * a step
54
+ | foo |
55
+ """
56
+ And a feature model based on that gherkin
57
+ """
58
+ @model = CukeModeler::Feature.new(<source_text>)
59
+ """
60
+ And the cell model inside of that feature model
61
+ """
62
+ @model = @model.tests.first.steps.first.block.rows.first.cells.first
63
+ """
64
+ When the cell's source column is requested
65
+ """
66
+ @model.source_column
67
+ """
68
+ Then the model returns "9"
@@ -40,3 +40,23 @@ Feature: Comment modeling
40
40
  @model.source_line
41
41
  """
42
42
  Then the model returns "1"
43
+
44
+ Scenario: Modeling a comment's source column
45
+ Given a feature file with the following gherkin:
46
+ """
47
+ # a comment
48
+ Feature:
49
+ """
50
+ And a feature file model based on that file
51
+ """
52
+ @model = CukeModeler::FeatureFile.new(<file_path>)
53
+ """
54
+ And the comment model of that feature file model
55
+ """
56
+ @model = @model.comments.first
57
+ """
58
+ When the comment's source column is requested
59
+ """
60
+ @model.source_column
61
+ """
62
+ Then the model returns "1"
@@ -57,3 +57,29 @@ Feature: Doc string modeling
57
57
  @model.source_line
58
58
  """
59
59
  Then the model returns "5"
60
+
61
+
62
+ Scenario: Modeling a doc string's source column
63
+ Given the following gherkin:
64
+ """
65
+ Feature:
66
+
67
+ Scenario:
68
+ * a step
69
+ \"\"\"
70
+ foo
71
+ \"\"\"
72
+ """
73
+ And a feature model based on that gherkin
74
+ """
75
+ @model = CukeModeler::Feature.new(<source_text>)
76
+ """
77
+ And the doc string model inside of that feature model
78
+ """
79
+ @model = @model.tests.first.steps.first.block
80
+ """
81
+ When the doc string's source column is requested
82
+ """
83
+ @model.source_column
84
+ """
85
+ Then the model returns "7"
@@ -128,3 +128,28 @@ Feature: Example modeling
128
128
  @model.source_line
129
129
  """
130
130
  Then the model returns "5"
131
+
132
+ Scenario: Modeling an example's source column
133
+ Given the following gherkin:
134
+ """
135
+ Feature:
136
+
137
+ Scenario Outline:
138
+ * a step
139
+ Examples:
140
+ | param |
141
+ | value |
142
+ """
143
+ And a feature model based on that gherkin
144
+ """
145
+ @model = CukeModeler::Feature.new(<source_text>)
146
+ """
147
+ And the example model inside of that feature model
148
+ """
149
+ @model = @model.tests.first.examples.first
150
+ """
151
+ When the example's source column is requested
152
+ """
153
+ @model.source_column
154
+ """
155
+ Then the model returns "3"
@@ -8,6 +8,7 @@ that feature.
8
8
  Background:
9
9
  Given the following gherkin:
10
10
  """
11
+ # language: en
11
12
  @tag_1 @tag_2
12
13
  Feature: Feature Foo
13
14
 
@@ -131,4 +132,18 @@ that feature.
131
132
  """
132
133
  @model.source_line
133
134
  """
134
- Then the model returns "2"
135
+ Then the model returns "3"
136
+
137
+ Scenario: Modeling a feature's source column
138
+ When the feature's source column is requested
139
+ """
140
+ @model.source_column
141
+ """
142
+ Then the model returns "1"
143
+
144
+ Scenario: Modeling a feature's language
145
+ When the feature's language is requested
146
+ """
147
+ @model.language
148
+ """
149
+ Then the model returns "en"
@@ -124,7 +124,7 @@ Feature: Outline modeling
124
124
  | @outline_tag_1 |
125
125
  | @outline_tag_2 |
126
126
 
127
- Scenario: Modeling a outline's source line
127
+ Scenario: Modeling an outline's source line
128
128
  Given the following gherkin:
129
129
  """
130
130
  Feature:
@@ -148,3 +148,28 @@ Feature: Outline modeling
148
148
  @model.source_line
149
149
  """
150
150
  Then the model returns "3"
151
+
152
+ Scenario: Modeling an outline's source column
153
+ Given the following gherkin:
154
+ """
155
+ Feature:
156
+
157
+ Scenario Outline:
158
+ * a step
159
+ Examples:
160
+ | param |
161
+ | value |
162
+ """
163
+ And a feature model based on that gherkin
164
+ """
165
+ @model = CukeModeler::Feature.new(<source_text>)
166
+ """
167
+ And the outline model of that feature model
168
+ """
169
+ @model = @model.outlines.first
170
+ """
171
+ When the outline's source column is requested
172
+ """
173
+ @model.source_column
174
+ """
175
+ Then the model returns "3"
@@ -45,3 +45,26 @@ Feature: Row modeling
45
45
  @model.source_line
46
46
  """
47
47
  Then the model returns "5"
48
+
49
+ Scenario: Modeling a row's source column
50
+ Given the following gherkin:
51
+ """
52
+ Feature:
53
+
54
+ Scenario:
55
+ * a step
56
+ | foo |
57
+ """
58
+ And a feature model based on that gherkin
59
+ """
60
+ @model = CukeModeler::Feature.new(<source_text>)
61
+ """
62
+ And the row model inside of that feature model
63
+ """
64
+ @model = @model.tests.first.steps.first.block.rows.first
65
+ """
66
+ When the rows's source column is requested
67
+ """
68
+ @model.source_column
69
+ """
70
+ Then the model returns "7"
@@ -148,3 +148,24 @@ in that rule.
148
148
  @model.source_line
149
149
  """
150
150
  Then the model returns "3"
151
+
152
+ Scenario: Modeling a rule's source column
153
+ Given the following gherkin:
154
+ """
155
+ Feature:
156
+
157
+ Rule:
158
+ """
159
+ And a feature model based on that gherkin
160
+ """
161
+ @model = CukeModeler::Feature.new(<source_text>)
162
+ """
163
+ And the rule model of that feature model
164
+ """
165
+ @model = @model.rules.first
166
+ """
167
+ When the rule's source column is requested
168
+ """
169
+ @model.source_column
170
+ """
171
+ Then the model returns "3"
@@ -122,3 +122,25 @@ Feature: Scenario modeling
122
122
  @model.source_line
123
123
  """
124
124
  Then the model returns "3"
125
+
126
+ Scenario: Modeling a scenario's source column
127
+ Given the following gherkin:
128
+ """
129
+ Feature:
130
+
131
+ Scenario:
132
+ * a step
133
+ """
134
+ And a feature model based on that gherkin
135
+ """
136
+ @model = CukeModeler::Feature.new(<source_text>)
137
+ """
138
+ And the scenario model of that feature model
139
+ """
140
+ @model = @model.scenarios.first
141
+ """
142
+ When the scenario's source column is requested
143
+ """
144
+ @model.source_column
145
+ """
146
+ Then the model returns "3"
@@ -50,6 +50,28 @@ Feature: Step modeling
50
50
  """
51
51
  Then the model returns "4"
52
52
 
53
+ Scenario: Modeling a step's source column
54
+ Given the following gherkin:
55
+ """
56
+ Feature:
57
+
58
+ Scenario:
59
+ * a step
60
+ """
61
+ And a feature model based on that gherkin
62
+ """
63
+ @model = CukeModeler::Feature.new(<source_text>)
64
+ """
65
+ And the step model inside of that feature model
66
+ """
67
+ @model = @model.tests.first.steps.first
68
+ """
69
+ When the step's source column is requested
70
+ """
71
+ @model.source_column
72
+ """
73
+ Then the model returns "5"
74
+
53
75
  Scenario: Modeling a step's table
54
76
  Given a step model based on the following gherkin:
55
77
  """
@@ -47,3 +47,27 @@ Feature: Table modeling
47
47
  @model.source_line
48
48
  """
49
49
  Then the model returns "5"
50
+
51
+ Scenario: Modeling a table's source column
52
+ Given the following gherkin:
53
+ """
54
+ Feature:
55
+
56
+ Scenario:
57
+ * a step
58
+ | value 1 |
59
+ | value 2 |
60
+ """
61
+ And a feature model based on that gherkin
62
+ """
63
+ @model = CukeModeler::Feature.new(<source_text>)
64
+ """
65
+ And the table model inside of that feature model
66
+ """
67
+ @model = @model.tests.first.steps.first.block
68
+ """
69
+ When the table's source column is requested
70
+ """
71
+ @model.source_column
72
+ """
73
+ Then the model returns "7"
@@ -40,3 +40,23 @@ Feature: Tag modeling
40
40
  @model.source_line
41
41
  """
42
42
  Then the model returns "1"
43
+
44
+ Scenario: Modeling a tag's source column
45
+ Given the following gherkin:
46
+ """
47
+ @a_tag
48
+ Feature:
49
+ """
50
+ And a feature model based on that gherkin
51
+ """
52
+ @model = CukeModeler::Feature.new(<source_text>)
53
+ """
54
+ And the tag model of that feature model
55
+ """
56
+ @model = @model.tags.first
57
+ """
58
+ When the tag's source column is requested
59
+ """
60
+ @model.source_column
61
+ """
62
+ Then the model returns "1"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cuke_modeler
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.13.0
4
+ version: 3.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Kessler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-25 00:00:00.000000000 Z
11
+ date: 2022-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: cucumber-gherkin
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: '23.0'
19
+ version: '24.0'
20
20
  type: :runtime
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: '23.0'
26
+ version: '24.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -229,6 +229,7 @@ files:
229
229
  - lib/cuke_modeler/adapters/gherkin_20_adapter.rb
230
230
  - lib/cuke_modeler/adapters/gherkin_21_adapter.rb
231
231
  - lib/cuke_modeler/adapters/gherkin_22_adapter.rb
232
+ - lib/cuke_modeler/adapters/gherkin_23_adapter.rb
232
233
  - lib/cuke_modeler/adapters/gherkin_9_adapter.rb
233
234
  - lib/cuke_modeler/adapters/gherkin_base_adapter.rb
234
235
  - lib/cuke_modeler/containing.rb