cuke_modeler 1.4.0 → 3.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.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +329 -0
  3. data/LICENSE.txt +1 -1
  4. data/README.md +25 -18
  5. data/cuke_modeler.gemspec +15 -9
  6. data/lib/cuke_modeler/adapters/gherkin_10_adapter.rb +12 -0
  7. data/lib/cuke_modeler/adapters/gherkin_11_adapter.rb +12 -0
  8. data/lib/cuke_modeler/adapters/gherkin_12_adapter.rb +12 -0
  9. data/lib/cuke_modeler/adapters/gherkin_13_adapter.rb +12 -0
  10. data/lib/cuke_modeler/adapters/{gherkin_6_adapter.rb → gherkin_9_adapter.rb} +75 -64
  11. data/lib/cuke_modeler/containing.rb +16 -0
  12. data/lib/cuke_modeler/described.rb +1 -0
  13. data/lib/cuke_modeler/models/background.rb +1 -1
  14. data/lib/cuke_modeler/models/cell.rb +1 -1
  15. data/lib/cuke_modeler/models/comment.rb +1 -1
  16. data/lib/cuke_modeler/models/directory.rb +2 -2
  17. data/lib/cuke_modeler/models/doc_string.rb +1 -1
  18. data/lib/cuke_modeler/models/example.rb +1 -1
  19. data/lib/cuke_modeler/models/feature.rb +1 -1
  20. data/lib/cuke_modeler/models/feature_file.rb +2 -2
  21. data/lib/cuke_modeler/models/outline.rb +1 -1
  22. data/lib/cuke_modeler/models/row.rb +1 -1
  23. data/lib/cuke_modeler/models/scenario.rb +1 -1
  24. data/lib/cuke_modeler/models/step.rb +32 -3
  25. data/lib/cuke_modeler/models/table.rb +1 -1
  26. data/lib/cuke_modeler/models/tag.rb +1 -1
  27. data/lib/cuke_modeler/named.rb +1 -0
  28. data/lib/cuke_modeler/nested.rb +1 -0
  29. data/lib/cuke_modeler/parsed.rb +1 -0
  30. data/lib/cuke_modeler/parsing.rb +88 -92
  31. data/lib/cuke_modeler/sourceable.rb +1 -0
  32. data/lib/cuke_modeler/stepped.rb +1 -0
  33. data/lib/cuke_modeler/taggable.rb +1 -0
  34. data/lib/cuke_modeler/version.rb +1 -1
  35. data/testing/cucumber/features/analysis/step_comparison.feature +25 -0
  36. data/testing/cucumber/features/analysis/test_comparison.feature +1 -1
  37. metadata +55 -142
  38. data/.gitignore +0 -18
  39. data/.simplecov +0 -7
  40. data/.travis.yml +0 -54
  41. data/Gemfile +0 -36
  42. data/History.md +0 -191
  43. data/Rakefile +0 -63
  44. data/appveyor.yml +0 -43
  45. data/lib/cuke_modeler/adapters/gherkin_2_adapter.rb +0 -273
  46. data/lib/cuke_modeler/adapters/gherkin_3_adapter.rb +0 -296
  47. data/lib/cuke_modeler/adapters/gherkin_4_adapter.rb +0 -308
  48. data/testing/cucumber/step_definitions/action_steps.rb +0 -13
  49. data/testing/cucumber/step_definitions/background_steps.rb +0 -1
  50. data/testing/cucumber/step_definitions/directory_steps.rb +0 -6
  51. data/testing/cucumber/step_definitions/doc_string_steps.rb +0 -1
  52. data/testing/cucumber/step_definitions/feature_file_steps.rb +0 -16
  53. data/testing/cucumber/step_definitions/feature_steps.rb +0 -7
  54. data/testing/cucumber/step_definitions/modeling_steps.rb +0 -44
  55. data/testing/cucumber/step_definitions/setup_steps.rb +0 -32
  56. data/testing/cucumber/step_definitions/step_steps.rb +0 -3
  57. data/testing/cucumber/step_definitions/table_steps.rb +0 -1
  58. data/testing/cucumber/step_definitions/tag_steps.rb +0 -3
  59. data/testing/cucumber/step_definitions/verification_steps.rb +0 -173
  60. data/testing/cucumber/support/env.rb +0 -30
  61. data/testing/dialect_helper.rb +0 -48
  62. data/testing/file_helper.rb +0 -47
  63. data/testing/gemfiles/gherkin2.gemfile +0 -32
  64. data/testing/gemfiles/gherkin3.gemfile +0 -26
  65. data/testing/gemfiles/gherkin4.gemfile +0 -27
  66. data/testing/gemfiles/gherkin5.gemfile +0 -26
  67. data/testing/gemfiles/gherkin6.gemfile +0 -10
  68. data/testing/rspec/spec/integration/background_integration_spec.rb +0 -442
  69. data/testing/rspec/spec/integration/cell_integration_spec.rb +0 -335
  70. data/testing/rspec/spec/integration/comment_integration_spec.rb +0 -177
  71. data/testing/rspec/spec/integration/directory_integration_spec.rb +0 -218
  72. data/testing/rspec/spec/integration/doc_string_integration_spec.rb +0 -402
  73. data/testing/rspec/spec/integration/example_integration_spec.rb +0 -741
  74. data/testing/rspec/spec/integration/feature_file_integration_spec.rb +0 -272
  75. data/testing/rspec/spec/integration/feature_integration_spec.rb +0 -650
  76. data/testing/rspec/spec/integration/gherkin_2_adapter_spec.rb +0 -166
  77. data/testing/rspec/spec/integration/gherkin_3_adapter_spec.rb +0 -166
  78. data/testing/rspec/spec/integration/gherkin_4_adapter_spec.rb +0 -165
  79. data/testing/rspec/spec/integration/gherkin_6_adapter_spec.rb +0 -166
  80. data/testing/rspec/spec/integration/model_integration_spec.rb +0 -15
  81. data/testing/rspec/spec/integration/nested_integration_spec.rb +0 -91
  82. data/testing/rspec/spec/integration/outline_integration_spec.rb +0 -624
  83. data/testing/rspec/spec/integration/parsing_integration_spec.rb +0 -117
  84. data/testing/rspec/spec/integration/row_integration_spec.rb +0 -291
  85. data/testing/rspec/spec/integration/scenario_integration_spec.rb +0 -479
  86. data/testing/rspec/spec/integration/shared/models_integration_specs.rb +0 -18
  87. data/testing/rspec/spec/integration/step_integration_spec.rb +0 -475
  88. data/testing/rspec/spec/integration/table_integration_spec.rb +0 -337
  89. data/testing/rspec/spec/integration/tag_integration_spec.rb +0 -259
  90. data/testing/rspec/spec/spec_helper.rb +0 -122
  91. data/testing/rspec/spec/unit/background_unit_spec.rb +0 -83
  92. data/testing/rspec/spec/unit/cell_unit_spec.rb +0 -68
  93. data/testing/rspec/spec/unit/comment_unit_spec.rb +0 -68
  94. data/testing/rspec/spec/unit/described_unit_spec.rb +0 -23
  95. data/testing/rspec/spec/unit/directory_unit_spec.rb +0 -127
  96. data/testing/rspec/spec/unit/doc_string_unit_spec.rb +0 -100
  97. data/testing/rspec/spec/unit/example_unit_spec.rb +0 -133
  98. data/testing/rspec/spec/unit/feature_file_unit_spec.rb +0 -125
  99. data/testing/rspec/spec/unit/feature_unit_spec.rb +0 -157
  100. data/testing/rspec/spec/unit/model_unit_spec.rb +0 -15
  101. data/testing/rspec/spec/unit/named_unit_spec.rb +0 -23
  102. data/testing/rspec/spec/unit/nested_unit_spec.rb +0 -43
  103. data/testing/rspec/spec/unit/outline_unit_spec.rb +0 -117
  104. data/testing/rspec/spec/unit/parsed_unit_spec.rb +0 -27
  105. data/testing/rspec/spec/unit/parsing_unit_spec.rb +0 -54
  106. data/testing/rspec/spec/unit/row_unit_spec.rb +0 -68
  107. data/testing/rspec/spec/unit/scenario_unit_spec.rb +0 -86
  108. data/testing/rspec/spec/unit/shared/bare_bones_models_unit_specs.rb +0 -14
  109. data/testing/rspec/spec/unit/shared/containing_models_unit_specs.rb +0 -25
  110. data/testing/rspec/spec/unit/shared/described_models_unit_specs.rb +0 -38
  111. data/testing/rspec/spec/unit/shared/keyworded_models_unit_specs.rb +0 -58
  112. data/testing/rspec/spec/unit/shared/models_unit_specs.rb +0 -15
  113. data/testing/rspec/spec/unit/shared/named_models_unit_specs.rb +0 -39
  114. data/testing/rspec/spec/unit/shared/nested_models_unit_specs.rb +0 -51
  115. data/testing/rspec/spec/unit/shared/parsed_models_unit_specs.rb +0 -39
  116. data/testing/rspec/spec/unit/shared/prepopulated_models_unit_specs.rb +0 -18
  117. data/testing/rspec/spec/unit/shared/sourced_models_unit_specs.rb +0 -39
  118. data/testing/rspec/spec/unit/shared/stepped_models_unit_specs.rb +0 -46
  119. data/testing/rspec/spec/unit/shared/stringifiable_models_unit_specs.rb +0 -18
  120. data/testing/rspec/spec/unit/shared/tagged_models_unit_specs.rb +0 -72
  121. data/testing/rspec/spec/unit/sourceable_unit_spec.rb +0 -27
  122. data/testing/rspec/spec/unit/step_unit_spec.rb +0 -109
  123. data/testing/rspec/spec/unit/stepped_unit_spec.rb +0 -23
  124. data/testing/rspec/spec/unit/table_unit_spec.rb +0 -77
  125. data/testing/rspec/spec/unit/tag_unit_spec.rb +0 -68
  126. data/testing/rspec/spec/unit/taggable_unit_spec.rb +0 -69
  127. data/testing/test_languages.json +0 -45
  128. data/todo.txt +0 -24
@@ -1,27 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Sourceable, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Sourceable }
7
- let(:model) { Object.new.extend(nodule) }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- it 'has a source line' do
13
- expect(model).to respond_to(:source_line)
14
- end
15
-
16
- it 'can change its source line' do
17
- expect(model).to respond_to(:source_line=)
18
-
19
- model.source_line = :some_source_line
20
- expect(model.source_line).to eq(:some_source_line)
21
- model.source_line = :some_other_source_line
22
- expect(model.source_line).to eq(:some_other_source_line)
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,109 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Step, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Step }
7
- let(:step) { clazz.new }
8
-
9
-
10
- describe 'common behavior' do
11
-
12
- it_should_behave_like 'a model'
13
- it_should_behave_like 'a keyworded model'
14
- it_should_behave_like 'a sourced model'
15
- it_should_behave_like 'a parsed model'
16
-
17
- end
18
-
19
-
20
- describe 'unique behavior' do
21
-
22
- it 'has text' do
23
- expect(step).to respond_to(:text)
24
- end
25
-
26
- it 'can change its text' do
27
- expect(step).to respond_to(:text=)
28
-
29
- step.text = :some_text
30
- expect(step.text).to eq(:some_text)
31
- step.text = :some_other_text
32
- expect(step.text).to eq(:some_other_text)
33
- end
34
-
35
- it 'has a block' do
36
- expect(step).to respond_to(:block)
37
- end
38
-
39
- it 'can change its block' do
40
- expect(step).to respond_to(:block=)
41
-
42
- step.block = :some_block
43
- expect(step.block).to eq(:some_block)
44
- step.block = :some_other_block
45
- expect(step.block).to eq(:some_other_block)
46
- end
47
-
48
-
49
- describe 'abstract instantiation' do
50
-
51
- context 'a new step object' do
52
-
53
- let(:step) { clazz.new }
54
-
55
-
56
- it 'starts with no text' do
57
- expect(step.text).to be_nil
58
- end
59
-
60
- it 'starts with no block' do
61
- expect(step.block).to be_nil
62
- end
63
-
64
- end
65
-
66
- end
67
-
68
- it 'contains some kind of block' do
69
- block = :block
70
- everything = [block]
71
-
72
- step.block = block
73
-
74
- expect(step.children).to match_array(everything)
75
- end
76
-
77
-
78
- describe 'step output' do
79
-
80
- context 'from abstract instantiation' do
81
-
82
- let(:step) { clazz.new }
83
-
84
-
85
- it 'can output an empty step' do
86
- expect { step.to_s }.to_not raise_error
87
- end
88
-
89
- it 'can output a step that has only a text' do
90
- step.text = 'step text'
91
-
92
- expect { step.to_s }.to_not raise_error
93
- end
94
-
95
- end
96
-
97
- end
98
-
99
- it 'can gracefully be compared to other types of objects' do
100
- # Some common types of object
101
- [1, 'foo', :bar, [], {}].each do |thing|
102
- expect { step == thing }.to_not raise_error
103
- expect(step == thing).to be false
104
- end
105
- end
106
-
107
- end
108
-
109
- end
@@ -1,23 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Stepped, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Stepped }
7
- let(:stepped_model) { Object.new.extend(nodule) }
8
-
9
-
10
- it 'has steps' do
11
- expect(stepped_model).to respond_to(:steps)
12
- end
13
-
14
- it 'can change its steps' do
15
- expect(stepped_model).to respond_to(:steps=)
16
-
17
- stepped_model.steps = :some_steps
18
- expect(stepped_model.steps).to eq(:some_steps)
19
- stepped_model.steps = :some_other_steps
20
- expect(stepped_model.steps).to eq(:some_other_steps)
21
- end
22
-
23
- end
@@ -1,77 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Table, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Table }
7
- let(:table) { clazz.new }
8
-
9
-
10
- describe 'common behavior' do
11
-
12
- it_should_behave_like 'a model'
13
- it_should_behave_like 'a parsed model'
14
- it_should_behave_like 'a sourced model'
15
-
16
- end
17
-
18
-
19
- describe 'unique behavior' do
20
-
21
- it 'has rows' do
22
- expect(table).to respond_to(:rows)
23
- end
24
-
25
- it 'can change its rows' do
26
- expect(table).to respond_to(:rows=)
27
-
28
- table.rows = :some_rows
29
- expect(table.rows).to eq(:some_rows)
30
- table.rows = :some_other_rows
31
- expect(table.rows).to eq(:some_other_rows)
32
- end
33
-
34
-
35
- describe 'abstract instantiation' do
36
-
37
- context 'a new table object' do
38
-
39
- let(:table) { clazz.new }
40
-
41
-
42
- it 'starts with no rows' do
43
- expect(table.rows).to eq([])
44
- end
45
-
46
- end
47
-
48
- end
49
-
50
- it 'contains rows' do
51
- rows = [:row_1, :row_2]
52
- everything = rows
53
-
54
- table.rows = rows
55
-
56
- expect(table.children).to match_array(everything)
57
- end
58
-
59
-
60
- describe 'table output' do
61
-
62
- context 'from abstract instantiation' do
63
-
64
- let(:table) { clazz.new }
65
-
66
-
67
- it 'can output an empty table' do
68
- expect { table.to_s }.to_not raise_error
69
- end
70
-
71
- end
72
-
73
- end
74
-
75
- end
76
-
77
- end
@@ -1,68 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Tag, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Tag }
7
- let(:model) { clazz.new }
8
-
9
-
10
- describe 'common behavior' do
11
-
12
- it_should_behave_like 'a model'
13
- it_should_behave_like 'a sourced model'
14
- it_should_behave_like 'a parsed model'
15
-
16
- end
17
-
18
-
19
- describe 'unique behavior' do
20
-
21
- it 'has a name' do
22
- expect(model).to respond_to(:name)
23
- end
24
-
25
- it 'can change its name' do
26
- expect(model).to respond_to(:name=)
27
-
28
- model.name = :some_name
29
- expect(model.name).to eq(:some_name)
30
- model.name = :some_other_name
31
- expect(model.name).to eq(:some_other_name)
32
- end
33
-
34
-
35
- describe 'abstract instantiation' do
36
-
37
- context 'a new tag object' do
38
-
39
- let(:tag) { clazz.new }
40
-
41
-
42
- it 'starts with no name' do
43
- expect(tag.name).to be_nil
44
- end
45
-
46
- end
47
-
48
- end
49
-
50
- end
51
-
52
-
53
- describe 'tag output' do
54
-
55
- context 'from abstract instantiation' do
56
-
57
- let(:tag) { clazz.new }
58
-
59
-
60
- it 'can output an empty tag' do
61
- expect { tag.to_s }.to_not raise_error
62
- end
63
-
64
- end
65
-
66
- end
67
-
68
- end
@@ -1,69 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Taggable, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Taggable }
7
- let(:model) { o = Object.new.extend(nodule)
8
-
9
- def o.parent_model
10
- @parent_model
11
- end
12
-
13
- def o.parent_model=(parent)
14
- @parent_model = parent
15
- end
16
-
17
- o
18
- }
19
-
20
-
21
- describe 'unique behavior' do
22
-
23
- it 'has tags' do
24
- expect(model).to respond_to(:tags)
25
- end
26
-
27
- it 'can change its tags' do
28
- expect(model).to respond_to(:tags=)
29
-
30
- model.tags = :some_tags
31
- expect(model.tags).to eq(:some_tags)
32
- model.tags = :some_other_tags
33
- expect(model.tags).to eq(:some_other_tags)
34
- end
35
-
36
- it 'has applied tags' do
37
- expect(model).to respond_to(:applied_tags)
38
- end
39
-
40
- it 'inherits its applied tags from its ancestors' do
41
- all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
42
- parent = double(:all_tags => all_parent_tags)
43
-
44
- model.parent_model = parent
45
-
46
- expect(model.applied_tags).to eq(all_parent_tags)
47
- end
48
-
49
- it 'knows all of its applicable tags' do
50
- all_parent_tags = [:parent_tag_1, :parent_tag_2, :grandparent_tag_1]
51
- own_tags = [:tag_1, :tag_2]
52
-
53
- parent = double(:all_tags => all_parent_tags)
54
-
55
- model.parent_model = parent
56
- model.tags = own_tags
57
-
58
- expect(model.all_tags).to eq(all_parent_tags + own_tags)
59
- end
60
-
61
- it 'may have no applied tags' do
62
- model.parent_model = :not_a_tagged_object
63
-
64
- expect(model.applied_tags).to eq([])
65
- end
66
-
67
- end
68
-
69
- end
@@ -1,45 +0,0 @@
1
- {
2
- "cm-test": {
3
- "and": [
4
- "CM-* ",
5
- "CM-And "
6
- ],
7
- "background": [
8
- "CM-Background"
9
- ],
10
- "but": [
11
- "CM-* ",
12
- "CM-But "
13
- ],
14
- "examples": [
15
- "CM-Examples",
16
- "CM-Scenarios"
17
- ],
18
- "feature": [
19
- "CM-Feature",
20
- "CM-Business Need",
21
- "CM-Ability"
22
- ],
23
- "given": [
24
- "CM-* ",
25
- "CM-Given "
26
- ],
27
- "name": "CukeModeler Test Language",
28
- "native": "CMT",
29
- "scenario": [
30
- "CM-Scenario"
31
- ],
32
- "scenarioOutline": [
33
- "CM-Scenario Outline",
34
- "CM-Scenario Template"
35
- ],
36
- "then": [
37
- "CM-* ",
38
- "CM-Then "
39
- ],
40
- "when": [
41
- "CM-* ",
42
- "CM-When "
43
- ]
44
- }
45
- }
data/todo.txt DELETED
@@ -1,24 +0,0 @@
1
- Priority
2
- -------------
3
-
4
- Show less boilerplate code in the documentation
5
- replace copying raw data during adaptation (all of the Marshal#load/#unload calls) with simply testing that modification never happens in order to increase performance?
6
-
7
-
8
- document helper modules as not part of the public API
9
-
10
- # todo - incorporate cuke_modeler extensions from other projects
11
- # todo - add plenty of testing around weird and minimal gherkin text for all models
12
- # todo - add support for `Rule` keyword
13
- # todo - incorporate new flexibility of `Example` keyword, etc.
14
- # todo - Have CukeModeler::Parsing.dialect also control the default dialect used by Gherkin
15
-
16
- Backlog
17
- -------------
18
-
19
- Include comments in the string output of a feature file
20
-
21
- replace joined array source text with single string source text/heredocs
22
- unit testing around parsing/modeling cases (whitespace, indentation, minimalistic feature elements, etc.)
23
- replace "\n" usages with the currently set record separator (i.e "\$" )
24
- make sure that all classes and tests are covered and attaches to code coverage