cuke_linter 0.13.0 → 1.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +9 -1
- data/README.md +4 -4
- data/cuke_linter.gemspec +3 -3
- data/lib/cuke_linter.rb +5 -3
- data/lib/cuke_linter/version.rb +1 -1
- metadata +2 -86
- data/.gitignore +0 -19
- data/.simplecov +0 -8
- data/.travis.yml +0 -33
- data/CONTRIBUTING.md +0 -26
- data/Gemfile +0 -6
- data/Rakefile +0 -63
- data/appveyor.yml +0 -43
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/environments/common_env.rb +0 -12
- data/environments/cucumber_env.rb +0 -22
- data/environments/rspec_env.rb +0 -50
- data/testing/cucumber/step_definitions/action_steps.rb +0 -84
- data/testing/cucumber/step_definitions/setup_steps.rb +0 -258
- data/testing/cucumber/step_definitions/verification_steps.rb +0 -94
- data/testing/file_helper.rb +0 -41
- data/testing/formatter_factory.rb +0 -15
- data/testing/gemfiles/cuke_modeler1.gemfile +0 -8
- data/testing/gemfiles/cuke_modeler2.gemfile +0 -8
- data/testing/linter_factory.rb +0 -60
- data/testing/model_factory.rb +0 -109
- data/testing/rspec/spec/integration/cli_integration_spec.rb +0 -556
- data/testing/rspec/spec/integration/configuration_spec.rb +0 -811
- data/testing/rspec/spec/integration/cuke_linter_integration_spec.rb +0 -243
- data/testing/rspec/spec/integration/formatters/formatter_integration_specs.rb +0 -5
- data/testing/rspec/spec/integration/formatters/pretty_formatter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/background_does_more_than_setup_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/element_with_common_tags_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/element_with_duplicate_tags_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/element_with_too_many_tags_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/example_without_name_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/feature_file_with_invalid_name_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/feature_file_with_mismatched_name_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/feature_with_too_many_different_tags_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/feature_without_description_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/feature_without_name_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/feature_without_scenarios_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/linter_integration_specs.rb +0 -7
- data/testing/rspec/spec/integration/linters/outline_with_single_example_row_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/single_test_background_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/step_with_end_period_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/step_with_too_many_characters_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_should_use_background_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_action_step_as_final_step_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_bad_name_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_no_action_step_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_no_name_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_no_verification_step_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_setup_step_after_action_step_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_setup_step_after_verification_step_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_setup_step_as_final_step_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/integration/linters/test_with_too_many_steps_linter_integration_spec.rb +0 -8
- data/testing/rspec/spec/unit/cuke_linter_unit_spec.rb +0 -114
- data/testing/rspec/spec/unit/formatters/formatter_unit_specs.rb +0 -11
- data/testing/rspec/spec/unit/formatters/pretty_formatter_unit_spec.rb +0 -115
- data/testing/rspec/spec/unit/linters/background_does_more_than_setup_linter_unit_spec.rb +0 -186
- data/testing/rspec/spec/unit/linters/configurable_linter_unit_specs.rb +0 -11
- data/testing/rspec/spec/unit/linters/element_with_common_tags_linter_unit_spec.rb +0 -248
- data/testing/rspec/spec/unit/linters/element_with_duplicate_tags_linter_unit_spec.rb +0 -203
- data/testing/rspec/spec/unit/linters/element_with_too_many_tags_linter_unit_spec.rb +0 -296
- data/testing/rspec/spec/unit/linters/example_without_name_linter_unit_spec.rb +0 -81
- data/testing/rspec/spec/unit/linters/feature_file_with_invalid_name_linter_unit_spec.rb +0 -106
- data/testing/rspec/spec/unit/linters/feature_file_with_mismatched_name_linter_unit_spec.rb +0 -124
- data/testing/rspec/spec/unit/linters/feature_with_too_many_different_tags_linter_unit_spec.rb +0 -293
- data/testing/rspec/spec/unit/linters/feature_without_description_linter_unit_spec.rb +0 -80
- data/testing/rspec/spec/unit/linters/feature_without_name_linter_unit_spec.rb +0 -84
- data/testing/rspec/spec/unit/linters/feature_without_scenarios_linter_unit_spec.rb +0 -102
- data/testing/rspec/spec/unit/linters/linter_unit_spec.rb +0 -197
- data/testing/rspec/spec/unit/linters/linter_unit_specs.rb +0 -57
- data/testing/rspec/spec/unit/linters/outline_with_single_example_row_linter_unit_spec.rb +0 -184
- data/testing/rspec/spec/unit/linters/single_test_background_linter_unit_spec.rb +0 -89
- data/testing/rspec/spec/unit/linters/step_with_end_period_linter_unit_spec.rb +0 -54
- data/testing/rspec/spec/unit/linters/step_with_too_many_characters_linter_unit_spec.rb +0 -155
- data/testing/rspec/spec/unit/linters/test_should_use_background_linter_unit_spec.rb +0 -464
- data/testing/rspec/spec/unit/linters/test_with_action_step_as_final_step_linter_unit_spec.rb +0 -165
- data/testing/rspec/spec/unit/linters/test_with_bad_name_linter_unit_spec.rb +0 -81
- data/testing/rspec/spec/unit/linters/test_with_no_action_step_linter_unit_spec.rb +0 -244
- data/testing/rspec/spec/unit/linters/test_with_no_name_linter_unit_spec.rb +0 -88
- data/testing/rspec/spec/unit/linters/test_with_no_verification_step_linter_unit_spec.rb +0 -246
- data/testing/rspec/spec/unit/linters/test_with_setup_step_after_action_step_linter_unit_spec.rb +0 -233
- data/testing/rspec/spec/unit/linters/test_with_setup_step_after_verification_step_linter_unit_spec.rb +0 -233
- data/testing/rspec/spec/unit/linters/test_with_setup_step_as_final_step_linter_unit_spec.rb +0 -164
- data/testing/rspec/spec/unit/linters/test_with_too_many_steps_linter_unit_spec.rb +0 -192
|
@@ -1,248 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../../environments/rspec_env'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
RSpec.describe CukeLinter::ElementWithCommonTagsLinter do
|
|
5
|
-
|
|
6
|
-
let(:model_file_path) { 'some_file_path' }
|
|
7
|
-
|
|
8
|
-
it_should_behave_like 'a linter at the unit level'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
it 'has a name' do
|
|
12
|
-
expect(subject.name).to eq('ElementWithCommonTagsLinter')
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
describe 'linting' do
|
|
16
|
-
|
|
17
|
-
ELEMENTS_WITH_TAGGABLE_CHILDREN.each do |model_type|
|
|
18
|
-
|
|
19
|
-
context "with a #{model_type} that has common tags on all of its children" do
|
|
20
|
-
|
|
21
|
-
let(:test_model) do
|
|
22
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
23
|
-
|
|
24
|
-
2.times do
|
|
25
|
-
child_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
26
|
-
child_model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@same')]
|
|
27
|
-
|
|
28
|
-
case model_type
|
|
29
|
-
when 'feature'
|
|
30
|
-
model.tests << child_model
|
|
31
|
-
when 'outline'
|
|
32
|
-
model.examples << child_model
|
|
33
|
-
else
|
|
34
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
model
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
it_should_behave_like 'a linter linting a bad model'
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
it 'records a problem' do
|
|
46
|
-
result = subject.lint(test_model)
|
|
47
|
-
|
|
48
|
-
case model_type
|
|
49
|
-
when 'feature'
|
|
50
|
-
expect(result[:problem]).to match(/^All tests in Feature have tag '@\w+'\. Move tag to Feature level\.$/)
|
|
51
|
-
when 'outline'
|
|
52
|
-
expect(result[:problem]).to match(/^All Examples in Outline have tag '@\w+'\. Move tag to Outline level\.$/)
|
|
53
|
-
else
|
|
54
|
-
raise(ArgumentError, "Don't know how to verify a '#{model_type}'. Add a new case?")
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
it 'includes the name of the common tag found in the problem record' do
|
|
59
|
-
common_tag = test_model.children.first.tags.first.name
|
|
60
|
-
result = subject.lint(test_model)
|
|
61
|
-
expect(result[:problem]).to match(/have tag '#{common_tag}'\./)
|
|
62
|
-
|
|
63
|
-
test_model.children.first.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@still_same')]
|
|
64
|
-
test_model.children.last.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@still_same')]
|
|
65
|
-
|
|
66
|
-
common_tag = test_model.children.first.tags.first.name
|
|
67
|
-
result = subject.lint(test_model)
|
|
68
|
-
expect(result[:problem]).to match(/have tag '#{common_tag}'\./)
|
|
69
|
-
end
|
|
70
|
-
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
context "with a #{model_type} that does not have common tags on all of its children" do
|
|
74
|
-
|
|
75
|
-
context 'because none of their tags are common' do
|
|
76
|
-
|
|
77
|
-
let(:test_model) do
|
|
78
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
79
|
-
|
|
80
|
-
2.times do |count|
|
|
81
|
-
child_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
82
|
-
child_model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: "@tag_#{count}")]
|
|
83
|
-
|
|
84
|
-
case model_type
|
|
85
|
-
when 'feature'
|
|
86
|
-
model.tests << child_model
|
|
87
|
-
when 'outline'
|
|
88
|
-
model.examples << child_model
|
|
89
|
-
else
|
|
90
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
end
|
|
94
|
-
|
|
95
|
-
model
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
it_should_behave_like 'a linter linting a good model'
|
|
99
|
-
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
context 'because some of them have no tags' do
|
|
103
|
-
|
|
104
|
-
context 'because their tags are empty' do
|
|
105
|
-
|
|
106
|
-
let(:test_model) do
|
|
107
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
108
|
-
|
|
109
|
-
2.times do
|
|
110
|
-
child_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
111
|
-
child_model.tags = []
|
|
112
|
-
|
|
113
|
-
case model_type
|
|
114
|
-
when 'feature'
|
|
115
|
-
model.tests << child_model
|
|
116
|
-
when 'outline'
|
|
117
|
-
model.examples << child_model
|
|
118
|
-
else
|
|
119
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
model
|
|
125
|
-
end
|
|
126
|
-
|
|
127
|
-
it_should_behave_like 'a linter linting a good model'
|
|
128
|
-
|
|
129
|
-
end
|
|
130
|
-
|
|
131
|
-
context 'because their tags are nil' do
|
|
132
|
-
|
|
133
|
-
let(:test_model) do
|
|
134
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
135
|
-
|
|
136
|
-
2.times do
|
|
137
|
-
child_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
138
|
-
child_model.tags = nil
|
|
139
|
-
|
|
140
|
-
case model_type
|
|
141
|
-
when 'feature'
|
|
142
|
-
model.tests << child_model
|
|
143
|
-
when 'outline'
|
|
144
|
-
model.examples << child_model
|
|
145
|
-
else
|
|
146
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
model
|
|
152
|
-
end
|
|
153
|
-
|
|
154
|
-
it_should_behave_like 'a linter linting a good model'
|
|
155
|
-
|
|
156
|
-
end
|
|
157
|
-
|
|
158
|
-
end
|
|
159
|
-
|
|
160
|
-
context 'because the model only has one child' do
|
|
161
|
-
|
|
162
|
-
let(:test_model) do
|
|
163
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
164
|
-
|
|
165
|
-
1.times do
|
|
166
|
-
child_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
167
|
-
child_model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@a_tag')]
|
|
168
|
-
|
|
169
|
-
case model_type
|
|
170
|
-
when 'feature'
|
|
171
|
-
model.tests << child_model
|
|
172
|
-
when 'outline'
|
|
173
|
-
model.examples << child_model
|
|
174
|
-
else
|
|
175
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
176
|
-
end
|
|
177
|
-
|
|
178
|
-
end
|
|
179
|
-
|
|
180
|
-
model
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
it_should_behave_like 'a linter linting a good model'
|
|
184
|
-
|
|
185
|
-
end
|
|
186
|
-
|
|
187
|
-
context 'because the model has no children' do
|
|
188
|
-
|
|
189
|
-
context 'because the children are empty' do
|
|
190
|
-
|
|
191
|
-
let(:test_model) do
|
|
192
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
193
|
-
|
|
194
|
-
case model_type
|
|
195
|
-
when 'feature'
|
|
196
|
-
model.tests = []
|
|
197
|
-
when 'outline'
|
|
198
|
-
model.examples = []
|
|
199
|
-
else
|
|
200
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
model
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
it_should_behave_like 'a linter linting a good model'
|
|
207
|
-
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
context 'because the children are nil' do
|
|
211
|
-
|
|
212
|
-
let(:test_model) do
|
|
213
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
214
|
-
|
|
215
|
-
case model_type
|
|
216
|
-
when 'feature'
|
|
217
|
-
model.tests = nil
|
|
218
|
-
when 'outline'
|
|
219
|
-
model.examples = nil
|
|
220
|
-
else
|
|
221
|
-
raise(ArgumentError, "Don't know how to setup a '#{model_type}'. Add a new case?")
|
|
222
|
-
end
|
|
223
|
-
|
|
224
|
-
model
|
|
225
|
-
end
|
|
226
|
-
|
|
227
|
-
it_should_behave_like 'a linter linting a good model'
|
|
228
|
-
|
|
229
|
-
end
|
|
230
|
-
|
|
231
|
-
end
|
|
232
|
-
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
end
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
context 'a model that is not a type that has taggable children' do
|
|
239
|
-
|
|
240
|
-
let(:test_model) { CukeModeler::Model.new }
|
|
241
|
-
|
|
242
|
-
it_should_behave_like 'a linter linting a good model'
|
|
243
|
-
|
|
244
|
-
end
|
|
245
|
-
|
|
246
|
-
end
|
|
247
|
-
|
|
248
|
-
end
|
|
@@ -1,203 +0,0 @@
|
|
|
1
|
-
require_relative '../../../../../environments/rspec_env'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
RSpec.describe CukeLinter::ElementWithDuplicateTagsLinter do
|
|
5
|
-
|
|
6
|
-
let(:model_file_path) { 'some_file_path' }
|
|
7
|
-
|
|
8
|
-
it_should_behave_like 'a linter at the unit level'
|
|
9
|
-
it_should_behave_like 'a configurable linter at the unit level'
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
it 'has a name' do
|
|
13
|
-
expect(subject.name).to eq('ElementWithDuplicateTagsLinter')
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
describe 'linting' do
|
|
17
|
-
|
|
18
|
-
TAGGABLE_ELEMENTS.each do |model_type|
|
|
19
|
-
|
|
20
|
-
context "with a #{model_type} that has duplicate tags" do
|
|
21
|
-
|
|
22
|
-
let(:test_model) do
|
|
23
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
|
|
24
|
-
model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@same'),
|
|
25
|
-
CukeLinter::ModelFactory.generate_tag_model(source_text: '@same')]
|
|
26
|
-
|
|
27
|
-
model
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it_should_behave_like 'a linter linting a bad model'
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
it 'records a problem' do
|
|
34
|
-
result = subject.lint(test_model)
|
|
35
|
-
|
|
36
|
-
expect(result[:problem]).to match(/^#{model_type.capitalize} has duplicate tag '@\w+'\.$/)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
it 'includes the name of the duplicate tag found in the problem record' do
|
|
40
|
-
duplicate_tag = test_model.tags.first.name
|
|
41
|
-
result = subject.lint(test_model)
|
|
42
|
-
expect(result[:problem]).to eq("#{model_type.capitalize} has duplicate tag '#{duplicate_tag}'.")
|
|
43
|
-
|
|
44
|
-
test_model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@still_same'),
|
|
45
|
-
CukeLinter::ModelFactory.generate_tag_model(source_text: '@still_same')]
|
|
46
|
-
|
|
47
|
-
duplicate_tag = test_model.tags.first.name
|
|
48
|
-
result = subject.lint(test_model)
|
|
49
|
-
expect(result[:problem]).to eq("#{model_type.capitalize} has duplicate tag '#{duplicate_tag}'.")
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
context "with a #{model_type} that does not have duplicate tags" do
|
|
55
|
-
|
|
56
|
-
context 'because none of it tags are duplicates' do
|
|
57
|
-
|
|
58
|
-
let(:test_model) do
|
|
59
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
|
60
|
-
model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@foo'),
|
|
61
|
-
CukeLinter::ModelFactory.generate_tag_model(source_text: '@bar')]
|
|
62
|
-
|
|
63
|
-
model
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
it_should_behave_like 'a linter linting a good model'
|
|
67
|
-
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
context 'because it has no tags' do
|
|
71
|
-
|
|
72
|
-
context 'because its tags are empty' do
|
|
73
|
-
|
|
74
|
-
let(:test_model) do
|
|
75
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
|
76
|
-
model.tags = []
|
|
77
|
-
|
|
78
|
-
model
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
it_should_behave_like 'a linter linting a good model'
|
|
82
|
-
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
context 'because its tags are nil' do
|
|
86
|
-
|
|
87
|
-
let(:test_model) do
|
|
88
|
-
model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
|
89
|
-
model.tags = nil
|
|
90
|
-
|
|
91
|
-
model
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
it_should_behave_like 'a linter linting a good model'
|
|
95
|
-
|
|
96
|
-
end
|
|
97
|
-
|
|
98
|
-
end
|
|
99
|
-
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
describe 'configuration' do
|
|
104
|
-
|
|
105
|
-
describe 'tag inheritance configuration' do
|
|
106
|
-
|
|
107
|
-
let(:test_model_with_inherited_tags) do
|
|
108
|
-
test_model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
|
|
109
|
-
test_model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@same')]
|
|
110
|
-
|
|
111
|
-
distant_ancestor_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
112
|
-
distant_ancestor_model.tags = [CukeLinter::ModelFactory.generate_tag_model(source_text: '@same')]
|
|
113
|
-
ancestor_model = CukeLinter::ModelFactory.generate_lintable_model
|
|
114
|
-
|
|
115
|
-
# Adding an extra ancestor in the chain in order to make sure that the linter isn't just checking the parent model
|
|
116
|
-
ancestor_model.parent_model = distant_ancestor_model
|
|
117
|
-
test_model.parent_model = ancestor_model
|
|
118
|
-
|
|
119
|
-
test_model
|
|
120
|
-
end
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
context 'with no configuration' do
|
|
124
|
-
|
|
125
|
-
context 'because configuration never happened' do
|
|
126
|
-
|
|
127
|
-
it 'does not include inherited tags' do
|
|
128
|
-
result = subject.lint(test_model_with_inherited_tags)
|
|
129
|
-
|
|
130
|
-
expect(result).to eq(nil)
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
end
|
|
134
|
-
|
|
135
|
-
context 'because configuration did not set tag inheritance' do
|
|
136
|
-
|
|
137
|
-
let(:configuration) { {} }
|
|
138
|
-
|
|
139
|
-
before(:each) do
|
|
140
|
-
subject.configure(configuration)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
it 'does not include inherited tags' do
|
|
144
|
-
result = subject.lint(test_model_with_inherited_tags)
|
|
145
|
-
|
|
146
|
-
expect(result).to eq(nil)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
context 'with configuration' do
|
|
154
|
-
|
|
155
|
-
before(:each) do
|
|
156
|
-
subject.configure(configuration)
|
|
157
|
-
end
|
|
158
|
-
|
|
159
|
-
context 'enabling tag inheritance' do
|
|
160
|
-
|
|
161
|
-
let(:configuration) { { 'IncludeInheritedTags' => true } }
|
|
162
|
-
|
|
163
|
-
it 'does include inherited tags' do
|
|
164
|
-
result = subject.lint(test_model_with_inherited_tags)
|
|
165
|
-
|
|
166
|
-
expect(result).to_not be_nil
|
|
167
|
-
expect(result[:problem]).to match(/#{model_type.capitalize} has duplicate tag '@\w+'\./)
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
context 'disabling tag inheritance' do
|
|
173
|
-
|
|
174
|
-
let(:configuration) { { 'IncludeInheritedTags' => false } }
|
|
175
|
-
|
|
176
|
-
it 'does not include inherited tags' do
|
|
177
|
-
result = subject.lint(test_model_with_inherited_tags)
|
|
178
|
-
|
|
179
|
-
expect(result).to eq(nil)
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
end
|
|
187
|
-
|
|
188
|
-
end
|
|
189
|
-
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
context 'a non-taggable model' do
|
|
194
|
-
|
|
195
|
-
let(:test_model) { CukeModeler::Model.new }
|
|
196
|
-
|
|
197
|
-
it_should_behave_like 'a linter linting a good model'
|
|
198
|
-
|
|
199
|
-
end
|
|
200
|
-
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
end
|