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,15 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Model, Unit' do
5
-
6
- let(:clazz) { CukeModeler::Model }
7
-
8
-
9
- describe 'common behavior' do
10
-
11
- it_should_behave_like 'a model'
12
-
13
- end
14
-
15
- end
@@ -1,23 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Named, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Named }
7
- let(:named_model) { Object.new.extend(nodule) }
8
-
9
-
10
- it 'has a name' do
11
- expect(named_model).to respond_to(:name)
12
- end
13
-
14
- it 'can change its name' do
15
- expect(named_model).to respond_to(:name=)
16
-
17
- named_model.name = :some_name
18
- expect(named_model.name).to eq(:some_name)
19
- named_model.name = :some_other_name
20
- expect(named_model.name).to eq(:some_other_name)
21
- end
22
-
23
- end
@@ -1,43 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Nested, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Nested }
7
- let(:nested_model) { Object.new.extend(nodule) }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- describe 'an object including the module' do
13
-
14
- it 'has a parent model' do
15
- expect(nested_model).to respond_to(:parent_model)
16
- end
17
-
18
- it 'can change its parent model' do
19
- expect(nested_model).to respond_to(:parent_model=)
20
-
21
- nested_model.parent_model = :some_parent_model
22
- expect(nested_model.parent_model).to eq(:some_parent_model)
23
- nested_model.parent_model = :some_other_parent_model
24
- expect(nested_model.parent_model).to eq(:some_other_parent_model)
25
- end
26
-
27
- it 'has access to its ancestors' do
28
- expect(nested_model).to respond_to(:get_ancestor)
29
- end
30
-
31
- it 'gets an ancestor based on type' do
32
- expect(nodule.instance_method(:get_ancestor).arity).to eq(1)
33
- end
34
-
35
- it 'raises and exception if an unknown ancestor type is requested' do
36
- expect { nested_model.get_ancestor(:bad_ancestor_type) }.to raise_exception(ArgumentError)
37
- end
38
-
39
- end
40
-
41
- end
42
-
43
- end
@@ -1,117 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Outline, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Outline }
7
- let(:outline) { 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 named model'
15
- it_should_behave_like 'a described model'
16
- it_should_behave_like 'a stepped model'
17
- it_should_behave_like 'a tagged model'
18
- it_should_behave_like 'a sourced model'
19
- it_should_behave_like 'a parsed model'
20
-
21
- end
22
-
23
-
24
- describe 'unique behavior' do
25
-
26
- it 'has examples' do
27
- expect(outline).to respond_to(:examples)
28
- end
29
-
30
- it 'can change its examples' do
31
- expect(outline).to respond_to(:examples=)
32
-
33
- outline.examples = :some_examples
34
- expect(outline.examples).to eq(:some_examples)
35
- outline.examples = :some_other_examples
36
- expect(outline.examples).to eq(:some_other_examples)
37
- end
38
-
39
-
40
- describe 'abstract instantiation' do
41
-
42
- context 'a new outline object' do
43
-
44
- let(:outline) { clazz.new }
45
-
46
-
47
- it 'starts with no examples' do
48
- expect(outline.examples).to eq([])
49
- end
50
-
51
- end
52
-
53
- end
54
-
55
- it 'contains steps, examples, and tags' do
56
- tags = [:tag_1, :tagt_2]
57
- steps = [:step_1, :step_2, :step_3]
58
- examples = [:example_1, :example_2, :example_3]
59
- everything = steps + examples + tags
60
-
61
- outline.steps = steps
62
- outline.examples = examples
63
- outline.tags = tags
64
-
65
- expect(outline.children).to match_array(everything)
66
- end
67
-
68
-
69
- describe 'comparison' do
70
-
71
- it 'can gracefully be compared to other types of objects' do
72
- # Some common types of object
73
- [1, 'foo', :bar, [], {}].each do |thing|
74
- expect { outline == thing }.to_not raise_error
75
- expect(outline == thing).to be false
76
- end
77
- end
78
-
79
- end
80
-
81
-
82
- describe 'outline output' do
83
-
84
- context 'from abstract instantiation' do
85
-
86
- let(:outline) { clazz.new }
87
-
88
-
89
- it 'can output an empty outline' do
90
- expect { outline.to_s }.to_not raise_error
91
- end
92
-
93
- it 'can output an outline that has only a keyword' do
94
- outline.keyword = 'foo'
95
-
96
- expect(outline.to_s).to eq('foo:')
97
- end
98
-
99
- it 'can output an outline that has only a name' do
100
- outline.name = 'a name'
101
-
102
- expect { outline.to_s }.to_not raise_error
103
- end
104
-
105
- it 'can output an outline that has only a description' do
106
- outline.description = 'a description'
107
-
108
- expect { outline.to_s }.to_not raise_error
109
- end
110
-
111
- end
112
-
113
- end
114
-
115
- end
116
-
117
- end
@@ -1,27 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Parsed, Unit' do
5
-
6
- let(:nodule) { CukeModeler::Parsed }
7
- let(:model) { Object.new.extend(nodule) }
8
-
9
-
10
- describe 'unique behavior' do
11
-
12
- it 'can access its original parsing data' do
13
- expect(model).to respond_to(:parsing_data)
14
- end
15
-
16
- it 'can change its parsing data' do
17
- expect(model).to respond_to(:parsing_data=)
18
-
19
- model.parsing_data = :some_parsing_data
20
- expect(model.parsing_data).to eq(:some_parsing_data)
21
- model.parsing_data = :some_other_parsing_data
22
- expect(model.parsing_data).to eq(:some_other_parsing_data)
23
- end
24
-
25
- end
26
-
27
- end
@@ -1,54 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Parsing, Unit', :unit_test => true do
5
-
6
- let(:nodule) { CukeModeler::Parsing }
7
-
8
-
9
- before(:all) do
10
- @original_dialect = CukeModeler::Parsing.dialect
11
- end
12
-
13
- # Making sure that our changes don't escape a test and ruin the rest of the suite
14
- after(:all) do
15
- CukeModeler::Parsing.dialect = @original_dialect
16
- end
17
-
18
-
19
- describe 'unique behavior' do
20
-
21
- it 'can parse text' do
22
- expect(nodule).to respond_to(:parse_text)
23
- end
24
-
25
- it 'takes the text that is to be parsed and an optional file name' do
26
- expect(nodule.method(:parse_text).arity).to eq(-2)
27
- end
28
-
29
- it 'knows all of the available Gherkin dialects' do
30
- expect(nodule).to respond_to(:dialects)
31
- end
32
-
33
- it 'has an expected dialect to use for parsing' do
34
- expect(nodule).to respond_to(:dialect)
35
- end
36
-
37
- it 'can change its expected dialect' do
38
- expect(nodule).to respond_to(:dialect=)
39
-
40
- nodule.dialect = :some_dialect
41
- expect(nodule.dialect).to eq(:some_dialect)
42
- nodule.dialect = :some_other_dialect
43
- expect(nodule.dialect).to eq(:some_other_dialect)
44
- end
45
-
46
- it 'defaults to English if no dialect is set' do
47
- nodule.dialect = nil
48
-
49
- expect(nodule.dialect).to eq('en')
50
- end
51
-
52
- end
53
-
54
- end
@@ -1,68 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Row, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Row }
7
- let(:row) { 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 cells' do
22
- expect(row).to respond_to(:cells)
23
- end
24
-
25
- it 'can change its cells' do
26
- expect(row).to respond_to(:cells=)
27
-
28
- row.cells = :some_cells
29
- expect(row.cells).to eq(:some_cells)
30
- row.cells = :some_other_cells
31
- expect(row.cells).to eq(:some_other_cells)
32
- end
33
-
34
-
35
- describe 'abstract instantiation' do
36
-
37
- context 'a new row object' do
38
-
39
- let(:row) { clazz.new }
40
-
41
-
42
- it 'starts with no cells' do
43
- expect(row.cells).to eq([])
44
- end
45
-
46
- end
47
-
48
- end
49
-
50
-
51
- describe 'row output' do
52
-
53
- context 'from abstract instantiation' do
54
-
55
- let(:row) { clazz.new }
56
-
57
-
58
- it 'can output an empty row' do
59
- expect { row.to_s }.to_not raise_error
60
- end
61
-
62
- end
63
-
64
- end
65
-
66
- end
67
-
68
- end
@@ -1,86 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../spec_helper"
2
-
3
-
4
- describe 'Scenario, Unit', :unit_test => true do
5
-
6
- let(:clazz) { CukeModeler::Scenario }
7
- let(:scenario) { 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 named model'
15
- it_should_behave_like 'a described model'
16
- it_should_behave_like 'a stepped model'
17
- it_should_behave_like 'a tagged model'
18
- it_should_behave_like 'a sourced model'
19
- it_should_behave_like 'a parsed model'
20
-
21
- end
22
-
23
-
24
- describe 'unique behavior' do
25
-
26
- it 'contains steps and tags' do
27
- tags = [:tag_1, :tag_2]
28
- steps = [:step_1, :step_2]
29
- everything = steps + tags
30
-
31
- scenario.steps = steps
32
- scenario.tags = tags
33
-
34
- expect(scenario.children).to match_array(everything)
35
- end
36
-
37
-
38
- describe 'comparison' do
39
-
40
- it 'can gracefully be compared to other types of objects' do
41
- # Some common types of object
42
- [1, 'foo', :bar, [], {}].each do |thing|
43
- expect { scenario == thing }.to_not raise_error
44
- expect(scenario == thing).to be false
45
- end
46
- end
47
-
48
- end
49
-
50
-
51
- describe 'scenario output' do
52
-
53
- context 'from abstract instantiation' do
54
-
55
- let(:scenario) { clazz.new }
56
-
57
-
58
- it 'can output an empty scenario' do
59
- expect { scenario.to_s }.to_not raise_error
60
- end
61
-
62
- it 'can output a scenario that has only a keyword' do
63
- scenario.keyword = 'foo'
64
-
65
- expect(scenario.to_s).to eq('foo:')
66
- end
67
-
68
- it 'can output a scenario that has only a name' do
69
- scenario.name = 'a name'
70
-
71
- expect { scenario.to_s }.to_not raise_error
72
- end
73
-
74
- it 'can output a scenario that has only a description' do
75
- scenario.description = 'a description'
76
-
77
- expect { scenario.to_s }.to_not raise_error
78
- end
79
-
80
- end
81
-
82
- end
83
-
84
- end
85
-
86
- end
@@ -1,14 +0,0 @@
1
- require "#{File.dirname(__FILE__)}/../../spec_helper"
2
-
3
- shared_examples_for 'a bare bones model' do
4
-
5
- # clazz must be defined by the calling file
6
-
7
- let(:model) { clazz.new }
8
-
9
-
10
- it 'can be initialized empty' do
11
- expect { clazz.new }.to_not raise_error
12
- end
13
-
14
- end