cuke_modeler 1.0.4 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/History.md +12 -0
  3. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +5 -5
  4. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +8 -5
  5. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +8 -5
  6. data/lib/cuke_modeler/containing.rb +12 -7
  7. data/lib/cuke_modeler/models/background.rb +7 -2
  8. data/lib/cuke_modeler/models/cell.rb +2 -1
  9. data/lib/cuke_modeler/models/doc_string.rb +2 -1
  10. data/lib/cuke_modeler/models/example.rb +8 -4
  11. data/lib/cuke_modeler/models/feature.rb +4 -1
  12. data/lib/cuke_modeler/models/outline.rb +6 -2
  13. data/lib/cuke_modeler/models/row.rb +2 -1
  14. data/lib/cuke_modeler/models/scenario.rb +7 -2
  15. data/lib/cuke_modeler/models/step.rb +2 -1
  16. data/lib/cuke_modeler/models/table.rb +2 -1
  17. data/lib/cuke_modeler/models/tag.rb +2 -1
  18. data/lib/cuke_modeler/parsing.rb +45 -0
  19. data/lib/cuke_modeler/version.rb +1 -1
  20. data/testing/cucumber/features/modeling/background_modeling.feature +7 -0
  21. data/testing/cucumber/features/modeling/background_output.feature +6 -1
  22. data/testing/cucumber/features/modeling/directory_output.feature +6 -1
  23. data/testing/cucumber/features/modeling/doc_string_output.feature +6 -1
  24. data/testing/cucumber/features/modeling/example_modeling.feature +7 -0
  25. data/testing/cucumber/features/modeling/example_output.feature +6 -1
  26. data/testing/cucumber/features/modeling/feature_file_output.feature +6 -1
  27. data/testing/cucumber/features/modeling/feature_modeling.feature +7 -0
  28. data/testing/cucumber/features/modeling/feature_output.feature +6 -1
  29. data/testing/cucumber/features/modeling/model_output.feature +1 -8
  30. data/testing/cucumber/features/modeling/outline_modeling.feature +7 -0
  31. data/testing/cucumber/features/modeling/outline_output.feature +6 -1
  32. data/testing/cucumber/features/modeling/row_output.feature +6 -1
  33. data/testing/cucumber/features/modeling/scenario_modeling.feature +7 -0
  34. data/testing/cucumber/features/modeling/scenario_output.feature +6 -1
  35. data/testing/cucumber/features/modeling/step_output.feature +6 -1
  36. data/testing/cucumber/features/modeling/table_output.feature +6 -1
  37. data/testing/cucumber/features/modeling/tag_output.feature +6 -1
  38. data/testing/cucumber/step_definitions/verification_steps.rb +21 -12
  39. data/testing/dialect_helper.rb +48 -0
  40. data/testing/rspec/spec/integration/background_integration_spec.rb +93 -88
  41. data/testing/rspec/spec/integration/cell_integration_spec.rb +26 -27
  42. data/testing/rspec/spec/integration/directory_integration_spec.rb +4 -4
  43. data/testing/rspec/spec/integration/doc_string_integration_spec.rb +38 -39
  44. data/testing/rspec/spec/integration/example_integration_spec.rb +97 -95
  45. data/testing/rspec/spec/integration/feature_file_integration_spec.rb +5 -5
  46. data/testing/rspec/spec/integration/feature_integration_spec.rb +157 -155
  47. data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +17 -17
  48. data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +17 -17
  49. data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +17 -17
  50. data/testing/rspec/spec/integration/outline_integration_spec.rb +359 -354
  51. data/testing/rspec/spec/integration/parsing_integration_spec.rb +30 -2
  52. data/testing/rspec/spec/integration/row_integration_spec.rb +23 -25
  53. data/testing/rspec/spec/integration/scenario_integration_spec.rb +238 -235
  54. data/testing/rspec/spec/integration/step_integration_spec.rb +69 -64
  55. data/testing/rspec/spec/integration/table_integration_spec.rb +32 -36
  56. data/testing/rspec/spec/integration/tag_integration_spec.rb +26 -27
  57. data/testing/rspec/spec/spec_helper.rb +43 -0
  58. data/testing/rspec/spec/unit/background_unit_spec.rb +7 -0
  59. data/testing/rspec/spec/unit/example_unit_spec.rb +7 -0
  60. data/testing/rspec/spec/unit/feature_unit_spec.rb +7 -0
  61. data/testing/rspec/spec/unit/outline_unit_spec.rb +7 -0
  62. data/testing/rspec/spec/unit/parsing_unit_spec.rb +33 -0
  63. data/testing/rspec/spec/unit/scenario_unit_spec.rb +7 -0
  64. data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +58 -0
  65. data/testing/rspec/spec/unit/step_unit_spec.rb +1 -23
  66. data/testing/test_languages.json +45 -0
  67. data/todo.txt +1 -1
  68. metadata +6 -3
@@ -30,7 +30,7 @@ describe 'FeatureFile, Integration' do
30
30
 
31
31
  describe 'model population' do
32
32
 
33
- let(:source_text) { "Feature: Test feature" }
33
+ let(:source_text) { "#{@feature_keyword}: Test feature" }
34
34
  let(:feature_file_path) { "#{@default_file_directory}/#{@default_feature_file_name}" }
35
35
  let(:feature_file) { clazz.new(feature_file_path) }
36
36
 
@@ -76,7 +76,7 @@ describe 'FeatureFile, Integration' do
76
76
  file_path = "#{@default_file_directory}/#{@default_feature_file_name}"
77
77
 
78
78
  File.open(file_path, "w") { |file|
79
- file.puts('Feature: Test feature')
79
+ file.puts("#{@feature_keyword}: Test feature")
80
80
  }
81
81
 
82
82
  file = clazz.new(file_path)
@@ -90,7 +90,7 @@ describe 'FeatureFile, Integration' do
90
90
 
91
91
  before(:each) do
92
92
  file_path = "#{@default_file_directory}/feature_file_test_file.feature"
93
- File.open(file_path, 'w') { |file| file.write('Feature: Test feature') }
93
+ File.open(file_path, 'w') { |file| file.write("#{@feature_keyword}: Test feature") }
94
94
  end
95
95
 
96
96
  let(:directory) { CukeModeler::Directory.new(@default_file_directory) }
@@ -116,7 +116,7 @@ describe 'FeatureFile, Integration' do
116
116
 
117
117
  context 'from source text' do
118
118
 
119
- let(:source_text) { "Feature: Test feature" }
119
+ let(:source_text) { "#{@feature_keyword}: Test feature" }
120
120
  let(:feature_file_path) { "#{@default_file_directory}/#{@default_feature_file_name}" }
121
121
  let(:feature_file) { clazz.new(feature_file_path) }
122
122
 
@@ -135,7 +135,7 @@ describe 'FeatureFile, Integration' do
135
135
 
136
136
  it 'can be remade from its own output' do
137
137
  path = "#{@default_file_directory}/#{@default_feature_file_name}"
138
- File.open(path, "w") { |file| file.puts "Feature:" }
138
+ File.open(path, "w") { |file| file.puts "#{@feature_keyword}:" }
139
139
 
140
140
  source = path
141
141
  feature_file = clazz.new(source)
@@ -16,7 +16,7 @@ describe 'Feature, Integration' do
16
16
  describe 'unique behavior' do
17
17
 
18
18
  it 'can be instantiated with the minimum viable Gherkin' do
19
- source = 'Feature:'
19
+ source = "#{@feature_keyword}:"
20
20
 
21
21
  expect { clazz.new(source) }.to_not raise_error
22
22
  end
@@ -28,15 +28,14 @@ describe 'Feature, Integration' do
28
28
  end
29
29
 
30
30
  it 'properly sets its child models' do
31
- source = ['@a_tag',
32
- 'Feature: Test feature',
33
- ' Background: Test background',
34
- ' Scenario: Test scenario',
35
- ' Scenario Outline: Test outline',
36
- ' Examples: Test Examples',
37
- ' | param |',
38
- ' | value |']
39
- source = source.join("\n")
31
+ source = "@a_tag
32
+ #{@feature_keyword}: Test feature
33
+ #{@background_keyword}: Test background
34
+ #{@scenario_keyword}: Test scenario
35
+ #{@outline_keyword}: Test outline
36
+ #{@example_keyword}: Test Examples
37
+ | param |
38
+ | value |"
40
39
 
41
40
 
42
41
  feature = clazz.new(source)
@@ -53,7 +52,7 @@ describe 'Feature, Integration' do
53
52
  end
54
53
 
55
54
  it 'stores the original data generated by the parsing adapter', :gherkin4 => true do
56
- feature = clazz.new("@tag\nFeature: test feature\ndescription\nBackground:\nScenario:")
55
+ feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
57
56
  data = feature.parsing_data
58
57
 
59
58
  expect(data.keys).to match_array([:type, :tags, :location, :language, :keyword, :name, :children, :description])
@@ -61,7 +60,7 @@ describe 'Feature, Integration' do
61
60
  end
62
61
 
63
62
  it 'stores the original data generated by the parsing adapter', :gherkin3 => true do
64
- feature = clazz.new("@tag\nFeature: test feature\ndescription\nBackground:\nScenario:")
63
+ feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
65
64
  data = feature.parsing_data
66
65
 
67
66
  expect(data.keys).to match_array([:type, :tags, :location, :language, :keyword, :name, :scenarioDefinitions, :comments, :background, :description])
@@ -69,7 +68,7 @@ describe 'Feature, Integration' do
69
68
  end
70
69
 
71
70
  it 'stores the original data generated by the parsing adapter', :gherkin2 => true do
72
- feature = clazz.new("@tag\nFeature: test feature\ndescription\nBackground:\nScenario:")
71
+ feature = clazz.new("@tag\n#{@feature_keyword}: test feature\ndescription\n#{@background_keyword}:\n#{@scenario_keyword}:")
73
72
  data = feature.parsing_data
74
73
 
75
74
  expect(data.keys).to match_array(['keyword', 'name', 'line', 'description', 'id', 'uri', 'elements', 'tags'])
@@ -77,7 +76,7 @@ describe 'Feature, Integration' do
77
76
  end
78
77
 
79
78
  it 'trims whitespace from its source description' do
80
- source = ['Feature:',
79
+ source = ["#{@feature_keyword}:",
81
80
  ' ',
82
81
  ' description line 1',
83
82
  '',
@@ -86,11 +85,11 @@ describe 'Feature, Integration' do
86
85
  '',
87
86
  '',
88
87
  '',
89
- ' Scenario:']
88
+ " #{@scenario_keyword}:"]
90
89
  source = source.join("\n")
91
90
 
92
91
  feature = clazz.new(source)
93
- description = feature.description.split("\n")
92
+ description = feature.description.split("\n", -1)
94
93
 
95
94
  expect(description).to eq([' description line 1',
96
95
  '',
@@ -113,8 +112,15 @@ describe 'Feature, Integration' do
113
112
 
114
113
  context 'from source text' do
115
114
 
115
+ it "models the feature's keyword" do
116
+ source_text = "#{@feature_keyword}:"
117
+ feature = CukeModeler::Feature.new(source_text)
118
+
119
+ expect(feature.keyword).to eq(@feature_keyword)
120
+ end
121
+
116
122
  it "models the feature's source line" do
117
- source_text = "Feature:"
123
+ source_text = "#{@feature_keyword}:"
118
124
  feature = CukeModeler::Feature.new(source_text)
119
125
 
120
126
  expect(feature.source_line).to eq(1)
@@ -123,34 +129,34 @@ describe 'Feature, Integration' do
123
129
 
124
130
  context 'a filled feature' do
125
131
 
126
- let(:source_text) { '@tag_1 @tag_2
127
- Feature: Feature Foo
132
+ let(:source_text) { "@tag_1 @tag_2
133
+ #{@feature_keyword}: Feature Foo
128
134
 
129
135
  Some feature description.
130
136
 
131
137
  Some more.
132
138
  And some more.
133
139
 
134
- Background: The background
135
- * some setup step
140
+ #{@background_keyword}: The background
141
+ #{@step_keyword} some setup step
136
142
 
137
- Scenario: Scenario 1
138
- * a step
143
+ #{@scenario_keyword}: Scenario 1
144
+ #{@step_keyword} a step
139
145
 
140
- Scenario Outline: Outline 1
141
- * a step
142
- Examples:
146
+ #{@outline_keyword}: Outline 1
147
+ #{@step_keyword} a step
148
+ #{@example_keyword}:
143
149
  | param |
144
150
  | value |
145
151
 
146
- Scenario: Scenario 2
147
- * a step
152
+ #{@scenario_keyword}: Scenario 2
153
+ #{@step_keyword} a step
148
154
 
149
- Scenario Outline: Outline 2
150
- * a step
151
- Examples:
155
+ #{@outline_keyword}: Outline 2
156
+ #{@step_keyword} a step
157
+ #{@example_keyword}:
152
158
  | param |
153
- | value |' }
159
+ | value |" }
154
160
  let(:feature) { clazz.new(source_text) }
155
161
 
156
162
 
@@ -159,7 +165,7 @@ describe 'Feature, Integration' do
159
165
  end
160
166
 
161
167
  it "models the feature's description" do
162
- description = feature.description.split("\n")
168
+ description = feature.description.split("\n", -1)
163
169
 
164
170
  expect(description).to eq([' Some feature description.',
165
171
  '',
@@ -194,7 +200,7 @@ describe 'Feature, Integration' do
194
200
 
195
201
  context 'an empty feature' do
196
202
 
197
- let(:source_text) { 'Feature:' }
203
+ let(:source_text) { "#{@feature_keyword}:" }
198
204
  let(:feature) { clazz.new(source_text) }
199
205
 
200
206
 
@@ -230,18 +236,16 @@ describe 'Feature, Integration' do
230
236
 
231
237
 
232
238
  it 'knows how many test cases it has' do
233
- source_1 = ['Feature: Test feature']
234
- source_1 = source_1.join("\n")
235
-
236
- source_2 = ['Feature: Test feature',
237
- ' Scenario: Test scenario',
238
- ' Scenario Outline: Test outline',
239
- ' * a step',
240
- ' Examples: Test examples',
241
- ' |param|',
242
- ' |value_1|',
243
- ' |value_2|']
244
- source_2 = source_2.join("\n")
239
+ source_1 = "#{@feature_keyword}: Test feature"
240
+
241
+ source_2 = "#{@feature_keyword}: Test feature
242
+ #{@scenario_keyword}: Test scenario
243
+ #{@outline_keyword}: Test outline
244
+ #{@step_keyword} a step
245
+ #{@example_keyword}: Test examples
246
+ |param|
247
+ |value_1|
248
+ |value_2|"
245
249
 
246
250
  feature_1 = clazz.new(source_1)
247
251
  feature_2 = clazz.new(source_2)
@@ -255,8 +259,7 @@ describe 'Feature, Integration' do
255
259
  describe 'getting ancestors' do
256
260
 
257
261
  before(:each) do
258
- source = ['Feature: Test feature']
259
- source = source.join("\n")
262
+ source = "#{@feature_keyword}: Test feature"
260
263
 
261
264
  file_path = "#{@default_file_directory}/feature_test_file.feature"
262
265
  File.open(file_path, 'w') { |file| file.write(source) }
@@ -290,55 +293,54 @@ describe 'Feature, Integration' do
290
293
  describe 'feature output' do
291
294
 
292
295
  it 'can be remade from its own output' do
293
- source = ['@tag1 @tag2 @tag3',
294
- 'Feature: A feature with everything it could have',
295
- '',
296
- 'Including a description',
297
- 'and then some.',
298
- '',
299
- ' Background:',
300
- '',
301
- ' Background',
302
- ' description',
303
- '',
304
- ' * a step',
305
- ' | value1 |',
306
- ' * another step ',
307
- '',
308
- ' @scenario_tag ',
309
- ' Scenario:',
310
- '',
311
- ' Scenario ',
312
- ' description ',
313
- '',
314
- ' * a step ',
315
- ' * another step ',
316
- ' """"',
317
- ' some text ',
318
- ' """',
319
- '',
320
- ' @outline_tag ',
321
- ' Scenario Outline: ',
322
- '',
323
- ' Outline ',
324
- ' description ',
325
- '',
326
- ' * a step ',
327
- ' | value2 |',
328
- ' * another step ',
329
- ' """',
330
- ' some text ',
331
- ' """',
332
- '',
333
- ' @example_tag ',
334
- ' Examples:',
335
- '',
336
- ' Example ',
337
- ' description',
338
- '',
339
- ' | param |',
340
- ' | value |']
341
- source = source.join(" \n")
296
+ source = "@tag1 @tag2 @tag3
297
+ #{@feature_keyword}: A feature with everything it could have
298
+
299
+ Including a description
300
+ and then some.
301
+
302
+ #{@background_keyword}:
303
+
304
+ Background
305
+ description
306
+
307
+ #{@step_keyword} a step
308
+ | value1 |
309
+ #{@step_keyword} another step
310
+
311
+ @scenario_tag
312
+ #{@scenario_keyword}:
313
+
314
+ Scenario
315
+ description
316
+
317
+ #{@step_keyword} a step
318
+ #{@step_keyword} another step
319
+ \"\"\"
320
+ some text
321
+ \"\"\"
322
+
323
+ @outline_tag
324
+ #{@outline_keyword}:
325
+
326
+ Outline
327
+ description
328
+
329
+ #{@step_keyword} a step
330
+ | value2 |
331
+ #{@step_keyword} another step
332
+ \"\"\"
333
+ some text
334
+ \"\"\"
335
+
336
+ @example_tag
337
+ #{@example_keyword}:
338
+
339
+ Example
340
+ description
341
+
342
+ | param |
343
+ | value |"
342
344
  feature = clazz.new(source)
343
345
 
344
346
  feature_output = feature.to_s
@@ -351,35 +353,35 @@ describe 'Feature, Integration' do
351
353
  context 'from source text' do
352
354
 
353
355
  it 'can output an empty feature' do
354
- source = ['Feature:']
356
+ source = ["#{@feature_keyword}:"]
355
357
  source = source.join("\n")
356
358
  feature = clazz.new(source)
357
359
 
358
- feature_output = feature.to_s.split("\n")
360
+ feature_output = feature.to_s.split("\n", -1)
359
361
 
360
- expect(feature_output).to eq(['Feature:'])
362
+ expect(feature_output).to eq(["#{@feature_keyword}:"])
361
363
  end
362
364
 
363
365
  it 'can output a feature that has a name' do
364
- source = ['Feature: test feature']
366
+ source = ["#{@feature_keyword}: test feature"]
365
367
  source = source.join("\n")
366
368
  feature = clazz.new(source)
367
369
 
368
- feature_output = feature.to_s.split("\n")
370
+ feature_output = feature.to_s.split("\n", -1)
369
371
 
370
- expect(feature_output).to eq(['Feature: test feature'])
372
+ expect(feature_output).to eq(["#{@feature_keyword}: test feature"])
371
373
  end
372
374
 
373
375
  it 'can output a feature that has a description' do
374
- source = ['Feature:',
376
+ source = ["#{@feature_keyword}:",
375
377
  'Some description.',
376
378
  'Some more description.']
377
379
  source = source.join("\n")
378
380
  feature = clazz.new(source)
379
381
 
380
- feature_output = feature.to_s.split("\n")
382
+ feature_output = feature.to_s.split("\n", -1)
381
383
 
382
- expect(feature_output).to eq(['Feature:',
384
+ expect(feature_output).to eq(["#{@feature_keyword}:",
383
385
  '',
384
386
  'Some description.',
385
387
  'Some more description.'])
@@ -388,100 +390,100 @@ describe 'Feature, Integration' do
388
390
  it 'can output a feature that has tags' do
389
391
  source = ['@tag1 @tag2',
390
392
  '@tag3',
391
- 'Feature:']
393
+ "#{@feature_keyword}:"]
392
394
  source = source.join("\n")
393
395
  feature = clazz.new(source)
394
396
 
395
- feature_output = feature.to_s.split("\n")
397
+ feature_output = feature.to_s.split("\n", -1)
396
398
 
397
399
  expect(feature_output).to eq(['@tag1 @tag2 @tag3',
398
- 'Feature:'])
400
+ "#{@feature_keyword}:"])
399
401
  end
400
402
 
401
403
  it 'can output a feature that has a background' do
402
- source = ['Feature:',
403
- 'Background:',
404
- '* a step']
404
+ source = ["#{@feature_keyword}:",
405
+ "#{@background_keyword}:",
406
+ "#{@step_keyword} a step"]
405
407
  source = source.join("\n")
406
408
  feature = clazz.new(source)
407
409
 
408
- feature_output = feature.to_s.split("\n")
410
+ feature_output = feature.to_s.split("\n", -1)
409
411
 
410
- expect(feature_output).to eq(['Feature:',
412
+ expect(feature_output).to eq(["#{@feature_keyword}:",
411
413
  '',
412
- ' Background:',
413
- ' * a step'])
414
+ " #{@background_keyword}:",
415
+ " #{@step_keyword} a step"])
414
416
  end
415
417
 
416
418
  it 'can output a feature that has a scenario' do
417
- source = ['Feature:',
418
- 'Scenario:',
419
- '* a step']
419
+ source = ["#{@feature_keyword}:",
420
+ "#{@scenario_keyword}:",
421
+ "#{@step_keyword} a step"]
420
422
  source = source.join("\n")
421
423
  feature = clazz.new(source)
422
424
 
423
- feature_output = feature.to_s.split("\n")
425
+ feature_output = feature.to_s.split("\n", -1)
424
426
 
425
- expect(feature_output).to eq(['Feature:',
427
+ expect(feature_output).to eq(["#{@feature_keyword}:",
426
428
  '',
427
- ' Scenario:',
428
- ' * a step'])
429
+ " #{@scenario_keyword}:",
430
+ " #{@step_keyword} a step"])
429
431
  end
430
432
 
431
433
  it 'can output a feature that has an outline' do
432
- source = ['Feature:',
433
- 'Scenario Outline:',
434
- '* a step',
435
- 'Examples:',
434
+ source = ["#{@feature_keyword}:",
435
+ "#{@outline_keyword}:",
436
+ "#{@step_keyword} a step",
437
+ "#{@example_keyword}:",
436
438
  '|param|',
437
439
  '|value|']
438
440
  source = source.join("\n")
439
441
  feature = clazz.new(source)
440
442
 
441
- feature_output = feature.to_s.split("\n")
443
+ feature_output = feature.to_s.split("\n", -1)
442
444
 
443
- expect(feature_output).to eq(['Feature:',
445
+ expect(feature_output).to eq(["#{@feature_keyword}:",
444
446
  '',
445
- ' Scenario Outline:',
446
- ' * a step',
447
+ " #{@outline_keyword}:",
448
+ " #{@step_keyword} a step",
447
449
  '',
448
- ' Examples:',
450
+ " #{@example_keyword}:",
449
451
  ' | param |',
450
452
  ' | value |'])
451
453
  end
452
454
 
453
455
  it 'can output a feature that has everything' do
454
456
  source = ['@tag1 @tag2 @tag3',
455
- 'Feature: A feature with everything it could have',
457
+ "#{@feature_keyword}: A feature with everything it could have",
456
458
  'Including a description',
457
459
  'and then some.',
458
- 'Background:',
460
+ "#{@background_keyword}:",
459
461
  'Background',
460
462
  'description',
461
- '* a step',
463
+ "#{@step_keyword} a step",
462
464
  '|value1|',
463
- '* another step',
465
+ "#{@step_keyword} another step",
464
466
  '@scenario_tag',
465
- 'Scenario:',
467
+ "#{@scenario_keyword}:",
466
468
  'Scenario',
467
469
  'description',
468
- '* a step',
469
- '* another step',
470
+ "#{@step_keyword} a step",
471
+ "#{@step_keyword} another step",
470
472
  '"""',
471
473
  'some text',
472
474
  '"""',
473
475
  '@outline_tag',
474
- 'Scenario Outline:',
476
+ "#{@outline_keyword}:",
475
477
  'Outline ',
476
478
  'description',
477
- '* a step ',
479
+ "#{@step_keyword} a step ",
478
480
  '|value2|',
479
- '* another step',
481
+ "#{@step_keyword} another step",
480
482
  '"""',
481
483
  'some text',
482
484
  '"""',
483
485
  '@example_tag',
484
- 'Examples:',
486
+ "#{@example_keyword}:",
485
487
  'Example',
486
488
  'description',
487
489
  '|param|',
@@ -489,50 +491,50 @@ describe 'Feature, Integration' do
489
491
  source = source.join("\n")
490
492
  feature = clazz.new(source)
491
493
 
492
- feature_output = feature.to_s.split("\n")
494
+ feature_output = feature.to_s.split("\n", -1)
493
495
 
494
496
  expect(feature_output).to eq(['@tag1 @tag2 @tag3',
495
- 'Feature: A feature with everything it could have',
497
+ "#{@feature_keyword}: A feature with everything it could have",
496
498
  '',
497
499
  'Including a description',
498
500
  'and then some.',
499
501
  '',
500
- ' Background:',
502
+ " #{@background_keyword}:",
501
503
  '',
502
504
  ' Background',
503
505
  ' description',
504
506
  '',
505
- ' * a step',
507
+ " #{@step_keyword} a step",
506
508
  ' | value1 |',
507
- ' * another step',
509
+ " #{@step_keyword} another step",
508
510
  '',
509
511
  ' @scenario_tag',
510
- ' Scenario:',
512
+ " #{@scenario_keyword}:",
511
513
  '',
512
514
  ' Scenario',
513
515
  ' description',
514
516
  '',
515
- ' * a step',
516
- ' * another step',
517
+ " #{@step_keyword} a step",
518
+ " #{@step_keyword} another step",
517
519
  ' """',
518
520
  ' some text',
519
521
  ' """',
520
522
  '',
521
523
  ' @outline_tag',
522
- ' Scenario Outline:',
524
+ " #{@outline_keyword}:",
523
525
  '',
524
526
  ' Outline',
525
527
  ' description',
526
528
  '',
527
- ' * a step',
529
+ " #{@step_keyword} a step",
528
530
  ' | value2 |',
529
- ' * another step',
531
+ " #{@step_keyword} another step",
530
532
  ' """',
531
533
  ' some text',
532
534
  ' """',
533
535
  '',
534
536
  ' @example_tag',
535
- ' Examples:',
537
+ " #{@example_keyword}:",
536
538
  '',
537
539
  ' Example',
538
540
  ' description',