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.
Files changed (91) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +9 -1
  3. data/README.md +4 -4
  4. data/cuke_linter.gemspec +3 -3
  5. data/lib/cuke_linter.rb +5 -3
  6. data/lib/cuke_linter/version.rb +1 -1
  7. metadata +2 -86
  8. data/.gitignore +0 -19
  9. data/.simplecov +0 -8
  10. data/.travis.yml +0 -33
  11. data/CONTRIBUTING.md +0 -26
  12. data/Gemfile +0 -6
  13. data/Rakefile +0 -63
  14. data/appveyor.yml +0 -43
  15. data/bin/console +0 -14
  16. data/bin/setup +0 -8
  17. data/environments/common_env.rb +0 -12
  18. data/environments/cucumber_env.rb +0 -22
  19. data/environments/rspec_env.rb +0 -50
  20. data/testing/cucumber/step_definitions/action_steps.rb +0 -84
  21. data/testing/cucumber/step_definitions/setup_steps.rb +0 -258
  22. data/testing/cucumber/step_definitions/verification_steps.rb +0 -94
  23. data/testing/file_helper.rb +0 -41
  24. data/testing/formatter_factory.rb +0 -15
  25. data/testing/gemfiles/cuke_modeler1.gemfile +0 -8
  26. data/testing/gemfiles/cuke_modeler2.gemfile +0 -8
  27. data/testing/linter_factory.rb +0 -60
  28. data/testing/model_factory.rb +0 -109
  29. data/testing/rspec/spec/integration/cli_integration_spec.rb +0 -556
  30. data/testing/rspec/spec/integration/configuration_spec.rb +0 -811
  31. data/testing/rspec/spec/integration/cuke_linter_integration_spec.rb +0 -243
  32. data/testing/rspec/spec/integration/formatters/formatter_integration_specs.rb +0 -5
  33. data/testing/rspec/spec/integration/formatters/pretty_formatter_integration_spec.rb +0 -8
  34. data/testing/rspec/spec/integration/linters/background_does_more_than_setup_linter_integration_spec.rb +0 -8
  35. data/testing/rspec/spec/integration/linters/element_with_common_tags_linter_integration_spec.rb +0 -8
  36. data/testing/rspec/spec/integration/linters/element_with_duplicate_tags_linter_integration_spec.rb +0 -8
  37. data/testing/rspec/spec/integration/linters/element_with_too_many_tags_linter_integration_spec.rb +0 -8
  38. data/testing/rspec/spec/integration/linters/example_without_name_linter_integration_spec.rb +0 -8
  39. data/testing/rspec/spec/integration/linters/feature_file_with_invalid_name_integration_spec.rb +0 -8
  40. data/testing/rspec/spec/integration/linters/feature_file_with_mismatched_name_integration_spec.rb +0 -8
  41. data/testing/rspec/spec/integration/linters/feature_with_too_many_different_tags_linter_integration_spec.rb +0 -8
  42. data/testing/rspec/spec/integration/linters/feature_without_description_linter_integration_spec.rb +0 -8
  43. data/testing/rspec/spec/integration/linters/feature_without_name_linter_integration_spec.rb +0 -8
  44. data/testing/rspec/spec/integration/linters/feature_without_scenarios_linter_integration_spec.rb +0 -8
  45. data/testing/rspec/spec/integration/linters/linter_integration_spec.rb +0 -8
  46. data/testing/rspec/spec/integration/linters/linter_integration_specs.rb +0 -7
  47. data/testing/rspec/spec/integration/linters/outline_with_single_example_row_linter_integration_spec.rb +0 -8
  48. data/testing/rspec/spec/integration/linters/single_test_background_linter_integration_spec.rb +0 -8
  49. data/testing/rspec/spec/integration/linters/step_with_end_period_linter_integration_spec.rb +0 -8
  50. data/testing/rspec/spec/integration/linters/step_with_too_many_characters_linter_integration_spec.rb +0 -8
  51. data/testing/rspec/spec/integration/linters/test_should_use_background_linter_integration_spec.rb +0 -8
  52. data/testing/rspec/spec/integration/linters/test_with_action_step_as_final_step_linter_integration_spec.rb +0 -8
  53. data/testing/rspec/spec/integration/linters/test_with_bad_name_integration_spec.rb +0 -8
  54. data/testing/rspec/spec/integration/linters/test_with_no_action_step_integration_spec.rb +0 -8
  55. data/testing/rspec/spec/integration/linters/test_with_no_name_integration_spec.rb +0 -8
  56. data/testing/rspec/spec/integration/linters/test_with_no_verification_step_integration_spec.rb +0 -8
  57. data/testing/rspec/spec/integration/linters/test_with_setup_step_after_action_step_linter_integration_spec.rb +0 -8
  58. data/testing/rspec/spec/integration/linters/test_with_setup_step_after_verification_step_linter_integration_spec.rb +0 -8
  59. data/testing/rspec/spec/integration/linters/test_with_setup_step_as_final_step_linter_integration_spec.rb +0 -8
  60. data/testing/rspec/spec/integration/linters/test_with_too_many_steps_linter_integration_spec.rb +0 -8
  61. data/testing/rspec/spec/unit/cuke_linter_unit_spec.rb +0 -114
  62. data/testing/rspec/spec/unit/formatters/formatter_unit_specs.rb +0 -11
  63. data/testing/rspec/spec/unit/formatters/pretty_formatter_unit_spec.rb +0 -115
  64. data/testing/rspec/spec/unit/linters/background_does_more_than_setup_linter_unit_spec.rb +0 -186
  65. data/testing/rspec/spec/unit/linters/configurable_linter_unit_specs.rb +0 -11
  66. data/testing/rspec/spec/unit/linters/element_with_common_tags_linter_unit_spec.rb +0 -248
  67. data/testing/rspec/spec/unit/linters/element_with_duplicate_tags_linter_unit_spec.rb +0 -203
  68. data/testing/rspec/spec/unit/linters/element_with_too_many_tags_linter_unit_spec.rb +0 -296
  69. data/testing/rspec/spec/unit/linters/example_without_name_linter_unit_spec.rb +0 -81
  70. data/testing/rspec/spec/unit/linters/feature_file_with_invalid_name_linter_unit_spec.rb +0 -106
  71. data/testing/rspec/spec/unit/linters/feature_file_with_mismatched_name_linter_unit_spec.rb +0 -124
  72. data/testing/rspec/spec/unit/linters/feature_with_too_many_different_tags_linter_unit_spec.rb +0 -293
  73. data/testing/rspec/spec/unit/linters/feature_without_description_linter_unit_spec.rb +0 -80
  74. data/testing/rspec/spec/unit/linters/feature_without_name_linter_unit_spec.rb +0 -84
  75. data/testing/rspec/spec/unit/linters/feature_without_scenarios_linter_unit_spec.rb +0 -102
  76. data/testing/rspec/spec/unit/linters/linter_unit_spec.rb +0 -197
  77. data/testing/rspec/spec/unit/linters/linter_unit_specs.rb +0 -57
  78. data/testing/rspec/spec/unit/linters/outline_with_single_example_row_linter_unit_spec.rb +0 -184
  79. data/testing/rspec/spec/unit/linters/single_test_background_linter_unit_spec.rb +0 -89
  80. data/testing/rspec/spec/unit/linters/step_with_end_period_linter_unit_spec.rb +0 -54
  81. data/testing/rspec/spec/unit/linters/step_with_too_many_characters_linter_unit_spec.rb +0 -155
  82. data/testing/rspec/spec/unit/linters/test_should_use_background_linter_unit_spec.rb +0 -464
  83. data/testing/rspec/spec/unit/linters/test_with_action_step_as_final_step_linter_unit_spec.rb +0 -165
  84. data/testing/rspec/spec/unit/linters/test_with_bad_name_linter_unit_spec.rb +0 -81
  85. data/testing/rspec/spec/unit/linters/test_with_no_action_step_linter_unit_spec.rb +0 -244
  86. data/testing/rspec/spec/unit/linters/test_with_no_name_linter_unit_spec.rb +0 -88
  87. data/testing/rspec/spec/unit/linters/test_with_no_verification_step_linter_unit_spec.rb +0 -246
  88. data/testing/rspec/spec/unit/linters/test_with_setup_step_after_action_step_linter_unit_spec.rb +0 -233
  89. data/testing/rspec/spec/unit/linters/test_with_setup_step_after_verification_step_linter_unit_spec.rb +0 -233
  90. data/testing/rspec/spec/unit/linters/test_with_setup_step_as_final_step_linter_unit_spec.rb +0 -164
  91. data/testing/rspec/spec/unit/linters/test_with_too_many_steps_linter_unit_spec.rb +0 -192
@@ -1,165 +0,0 @@
1
- require_relative '../../../../../environments/rspec_env'
2
-
3
-
4
- RSpec.describe CukeLinter::TestWithActionStepAsFinalStepLinter 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('TestWithActionStepAsFinalStepLinter')
14
- end
15
-
16
- describe 'linting' do
17
-
18
- ['scenario', 'outline'].each do |model_type|
19
-
20
- context "with a #{model_type} that has an action step as its final step" do
21
-
22
- let(:test_model) do
23
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
24
- model.steps = [CukeModeler::Step.new('Given a step'),
25
- CukeModeler::Step.new('When a step')]
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 eq("Test has 'When' as the final step.")
37
- end
38
-
39
- end
40
-
41
- context "with a #{model_type} that does not have an action step as its final step" do
42
-
43
- context 'because it has no steps' do
44
-
45
- context 'because its steps are empty' do
46
-
47
- let(:test_model) do
48
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
49
- model.steps = []
50
-
51
- model
52
- end
53
-
54
- it_should_behave_like 'a linter linting a good model'
55
-
56
- end
57
-
58
- context 'because its steps are nil' do
59
-
60
- let(:test_model) do
61
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
62
- model.steps = nil
63
-
64
- model
65
- end
66
-
67
- it_should_behave_like 'a linter linting a good model'
68
-
69
- end
70
-
71
- end
72
-
73
- context 'because its final step is not an action step' do
74
-
75
- let(:test_model) do
76
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
77
- model.steps = [CukeModeler::Step.new('Then a step')]
78
-
79
- model
80
- end
81
-
82
- it_should_behave_like 'a linter linting a good model'
83
-
84
- end
85
-
86
- end
87
-
88
- end
89
-
90
- describe 'configuration' do
91
-
92
- let(:test_model) do
93
- CukeLinter::ModelFactory.generate_scenario_model(source_text: 'Scenario:
94
- * a step')
95
- end
96
-
97
- context 'with configuration' do
98
-
99
- before(:each) do
100
- subject.configure(configuration)
101
- end
102
-
103
- context "with a configured 'When' keyword" do
104
-
105
- let(:when_keyword) { 'Foo' }
106
- let(:configuration) { { 'When' => when_keyword } }
107
-
108
- it "uses the configured 'When' keyword" do
109
- test_model.steps.last.keyword = when_keyword
110
-
111
- result = subject.lint(test_model)
112
-
113
- expect(result).to_not be_nil
114
- end
115
-
116
- end
117
-
118
- end
119
-
120
- context 'without configuration' do
121
-
122
- context 'because configuration never happened' do
123
-
124
- it "uses the default 'When' keyword" do
125
- test_model.steps.last.keyword = CukeLinter::DEFAULT_WHEN_KEYWORD
126
-
127
- result = subject.lint(test_model)
128
-
129
- expect(result).to_not be_nil
130
- end
131
-
132
- end
133
-
134
- context "because configuration did not set a 'When' keyword" do
135
-
136
- before(:each) do
137
- subject.configure(configuration)
138
- end
139
-
140
- let(:configuration) { {} }
141
-
142
- it "uses the default 'When' keyword" do
143
- test_model.steps.last.keyword = CukeLinter::DEFAULT_WHEN_KEYWORD
144
-
145
- result = subject.lint(test_model)
146
-
147
- expect(result).to_not be_nil
148
- end
149
-
150
- end
151
-
152
- end
153
-
154
- end
155
-
156
-
157
- context 'a non-test model' do
158
-
159
- let(:test_model) { CukeModeler::Model.new }
160
-
161
- it_should_behave_like 'a linter linting a good model'
162
-
163
- end
164
- end
165
- end
@@ -1,81 +0,0 @@
1
- require_relative '../../../../../environments/rspec_env'
2
-
3
-
4
- RSpec.describe CukeLinter::TestWithBadNameLinter 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('TestWithBadNameLinter')
13
- end
14
-
15
- describe 'linting' do
16
-
17
- ['scenario', 'outline'].each do |model_type|
18
-
19
- context "with a #{model_type} that has a bad name" do
20
-
21
- context 'because its name contains a bad word' do
22
-
23
- ['test', 'check', 'verify'].each do |bad_word|
24
-
25
- let(:test_model) do
26
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
27
- model.name = "#{bad_word} bad names are reported"
28
-
29
- model
30
- end
31
-
32
- it_should_behave_like 'a linter linting a bad model'
33
-
34
- it 'records a problem' do
35
- result = subject.lint(test_model)
36
-
37
- expect(result[:problem]).to eq('"Test", "Verify" and "Check" should not be used in scenario names.')
38
- end
39
-
40
- end
41
-
42
- context 'because bad words are case insensitive' do
43
-
44
- ['Test', 'TEST'].each do |bad_word|
45
-
46
- let(:test_model) do
47
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
48
- model.name = "#{bad_word} bad names are reported"
49
-
50
- model
51
- end
52
-
53
- it_should_behave_like 'a linter linting a bad model'
54
-
55
- it 'records a problem' do
56
- result = subject.lint(test_model)
57
-
58
- expect(result[:problem]).to eq('"Test", "Verify" and "Check" should not be used in scenario names.')
59
- end
60
-
61
- end
62
-
63
- end
64
-
65
- end
66
-
67
- context 'a non-test model' do
68
-
69
- let(:test_model) { CukeModeler::Model.new }
70
-
71
- it_should_behave_like 'a linter linting a good model'
72
-
73
- end
74
-
75
- end
76
-
77
- end
78
-
79
- end
80
-
81
- end
@@ -1,244 +0,0 @@
1
- require_relative '../../../../../environments/rspec_env'
2
-
3
-
4
- RSpec.describe CukeLinter::TestWithNoActionStepLinter 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('TestWithNoActionStepLinter')
14
- end
15
-
16
- describe 'linting' do
17
-
18
- ['scenario', 'outline'].each do |model_type|
19
-
20
- context "with a #{model_type} that has no action step" do
21
-
22
- context 'because it has no steps' do
23
-
24
- context 'because its steps are empty' do
25
-
26
- let(:test_model) do
27
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
28
- model.steps = []
29
-
30
- model
31
- end
32
-
33
- it 'records a problem' do
34
- result = subject.lint(test_model)
35
-
36
- expect(result[:problem]).to eq("Test does not have a 'When' step.")
37
- end
38
-
39
- it_should_behave_like 'a linter linting a bad model'
40
-
41
- end
42
-
43
- context 'because its steps are nil' do
44
-
45
- let(:test_model) do
46
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
47
- model.steps = nil
48
-
49
- model
50
- end
51
-
52
- it 'records a problem' do
53
- result = subject.lint(test_model)
54
-
55
- expect(result[:problem]).to eq("Test does not have a 'When' step.")
56
- end
57
-
58
- it_should_behave_like 'a linter linting a bad model'
59
-
60
- end
61
-
62
- end
63
-
64
- context 'because none of its steps is an action step' do
65
-
66
- let(:test_model) do
67
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model", parent_file_path: model_file_path)
68
- model.steps = [CukeModeler::Step.new('* not an action step')]
69
-
70
- model
71
- end
72
-
73
- it 'records a problem' do
74
- result = subject.lint(test_model)
75
-
76
- expect(result[:problem]).to eq("Test does not have a 'When' step.")
77
- end
78
-
79
- it_should_behave_like 'a linter linting a bad model'
80
-
81
- end
82
-
83
- end
84
-
85
- context "with a #{model_type} that does have an action step" do
86
-
87
- context 'that comes from its background' do
88
-
89
- let(:test_model) do
90
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
91
- model.steps = []
92
- background_model = CukeModeler::Background.new
93
- background_model.steps = [CukeModeler::Step.new('When an action step')]
94
- model.parent_model.background = background_model
95
-
96
- model
97
- end
98
-
99
- it_should_behave_like 'a linter linting a good model'
100
-
101
- end
102
-
103
- context 'that is part of itself' do
104
-
105
- let(:test_model) do
106
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
107
- model.steps = [CukeModeler::Step.new('When an action step')]
108
-
109
- model
110
- end
111
-
112
- it_should_behave_like 'a linter linting a good model'
113
-
114
- end
115
-
116
- end
117
-
118
- end
119
-
120
- ['scenario', 'outline'].each do |model_type|
121
-
122
- context "with a #{model_type} that has a related background" do
123
-
124
- let(:test_model) do
125
- model = CukeLinter::ModelFactory.send("generate_#{model_type}_model")
126
- model.parent_model.background = background_model
127
-
128
- model
129
- end
130
-
131
- context 'that has no background steps' do
132
- context 'because its steps are empty' do
133
-
134
- let(:background_model) do
135
- model = CukeModeler::Background.new
136
- model.steps = []
137
-
138
- model
139
- end
140
-
141
- it 'can handle it' do
142
- expect { subject.lint(test_model) }.to_not raise_error
143
- end
144
-
145
- end
146
-
147
- context 'because its steps are nil' do
148
-
149
- let(:background_model) do
150
- model = CukeModeler::Background.new
151
- model.steps = nil
152
-
153
- model
154
- end
155
-
156
- it 'can handle it' do
157
- expect { subject.lint(test_model) }.to_not raise_error
158
- end
159
-
160
- end
161
-
162
- end
163
-
164
- end
165
-
166
- end
167
-
168
-
169
- describe 'configuration' do
170
-
171
- let(:test_model) do
172
- CukeLinter::ModelFactory.generate_scenario_model(source_text: 'Scenario:
173
- When a step')
174
- end
175
-
176
- context 'with configuration' do
177
-
178
- before(:each) do
179
- subject.configure(configuration)
180
- end
181
-
182
- context "with a configured 'When' keyword" do
183
-
184
- let(:when_keyword) { 'Foo' }
185
- let(:configuration) { { 'When' => when_keyword } }
186
-
187
- it "uses the configured 'When' keyword" do
188
- test_model.steps.first.keyword = 'When'
189
-
190
- result = subject.lint(test_model)
191
-
192
- expect(result).to_not be_nil
193
- end
194
-
195
- end
196
-
197
- end
198
-
199
- context 'without configuration' do
200
-
201
- context 'because configuration never happened' do
202
-
203
- it "uses the default 'When' keyword" do
204
- test_model.steps.first.keyword = CukeLinter::DEFAULT_WHEN_KEYWORD
205
-
206
- result = subject.lint(test_model)
207
-
208
- expect(result).to be_nil
209
- end
210
-
211
- end
212
-
213
- context "because configuration did not set a 'When' keyword" do
214
-
215
- before(:each) do
216
- subject.configure(configuration)
217
- end
218
-
219
- let(:configuration) { {} }
220
-
221
- it "uses the default 'When' keyword" do
222
- test_model.steps.last.keyword = CukeLinter::DEFAULT_WHEN_KEYWORD
223
-
224
- result = subject.lint(test_model)
225
-
226
- expect(result).to be_nil
227
- end
228
-
229
- end
230
-
231
- end
232
-
233
- end
234
-
235
-
236
- context 'a non-test model' do
237
-
238
- let(:test_model) { CukeModeler::Model.new }
239
-
240
- it_should_behave_like 'a linter linting a good model'
241
-
242
- end
243
- end
244
- end