cuke_linter 0.6.0 → 0.7.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 +15 -1
- data/cuke_linter.gemspec +1 -0
- data/lib/cuke_linter.rb +24 -3
- data/lib/cuke_linter/linters/element_with_too_many_tags_linter.rb +41 -0
- data/lib/cuke_linter/linters/feature_without_name_linter.rb +20 -0
- data/lib/cuke_linter/linters/test_with_no_action_step_linter.rb +23 -0
- data/lib/cuke_linter/linters/test_with_no_name_linter.rb +20 -0
- data/lib/cuke_linter/linters/test_with_no_verification_step_linter.rb +23 -0
- data/lib/cuke_linter/linters/test_with_too_many_steps_linter.rb +1 -1
- data/lib/cuke_linter/version.rb +1 -1
- data/testing/cucumber/features/command_line.feature +6 -4
- data/testing/cucumber/features/configuration/configuring_linters.feature +36 -0
- data/testing/cucumber/features/linters/{background_does_more_than_setup_linter.feature → background_does_more_than_setup.feature} +2 -2
- data/testing/cucumber/features/linters/custom_linters.feature +3 -3
- data/testing/cucumber/features/linters/default_linters.feature +5 -1
- data/testing/cucumber/features/linters/element_with_too_many_tags.feature +70 -0
- data/testing/cucumber/features/linters/example_without_name.feature +6 -1
- data/testing/cucumber/features/linters/feature_without_description.feature +1 -1
- data/testing/cucumber/features/linters/feature_without_name.feature +18 -0
- data/testing/cucumber/features/linters/feature_without_scenarios.feature +1 -1
- data/testing/cucumber/features/linters/outline_with_single_example_row.feature +1 -1
- data/testing/cucumber/features/linters/{single_test_background_linter.feature → single_test_background.feature} +1 -1
- data/testing/cucumber/features/linters/step_too_long.feature +3 -3
- data/testing/cucumber/features/linters/step_with_end_period.feature +1 -1
- data/testing/cucumber/features/linters/test_with_no_action_step.feature +30 -0
- data/testing/cucumber/features/linters/test_with_no_name.feature +23 -0
- data/testing/cucumber/features/linters/test_with_no_verification_step.feature +31 -0
- data/testing/cucumber/features/linters/test_with_too_many_steps.feature +6 -6
- data/testing/cucumber/step_definitions/setup_steps.rb +24 -0
- data/testing/cucumber/step_definitions/verification_steps.rb +5 -1
- data/testing/model_factory.rb +1 -0
- data/testing/rspec/spec/integration/cli_integration_spec.rb +16 -11
- data/testing/rspec/spec/integration/cuke_linter_integration_spec.rb +37 -0
- data/testing/rspec/spec/integration/linters/element_with_too_many_tags_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/feature_without_name_linter_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_no_action_step_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_no_name_integration_spec.rb +8 -0
- data/testing/rspec/spec/integration/linters/test_with_no_verification_step_integration_spec.rb +8 -0
- data/testing/rspec/spec/unit/linters/element_with_too_many_tags_linter_unit_spec.rb +333 -0
- data/testing/rspec/spec/unit/linters/feature_without_name_linter_unit_spec.rb +112 -0
- data/testing/rspec/spec/unit/linters/step_with_too_many_characters_linter_unit_spec.rb +53 -52
- data/testing/rspec/spec/unit/linters/test_with_no_action_step_linter_unit_spec.rb +217 -0
- data/testing/rspec/spec/unit/linters/test_with_no_name_linter_unit_spec.rb +115 -0
- data/testing/rspec/spec/unit/linters/test_with_no_verification_step_linter_unit_spec.rb +217 -0
- data/testing/rspec/spec/unit/linters/test_with_too_many_steps_linter_unit_spec.rb +2 -2
- metadata +24 -4
@@ -21,7 +21,12 @@ Feature: Example without name linter
|
|
21
21
|
| value |
|
22
22
|
"""
|
23
23
|
When it is linted
|
24
|
-
Then an error is reported
|
24
|
+
Then an error is reported:
|
25
25
|
| linter | problem | location |
|
26
26
|
| ExampleWithoutNameLinter | Example has no name | <path_to_file>:5 |
|
27
27
|
| ExampleWithoutNameLinter | Example has no name | <path_to_file>:8 |
|
28
|
+
|
29
|
+
@wip
|
30
|
+
Scenario: Configuration
|
31
|
+
|
32
|
+
Ideas: Configure whether or not the linter triggers on outline with only one Example set?
|
@@ -12,6 +12,6 @@ Feature: Feature without description linter
|
|
12
12
|
Feature: Features must have a description
|
13
13
|
"""
|
14
14
|
When it is linted
|
15
|
-
Then an error is reported
|
15
|
+
Then an error is reported:
|
16
16
|
| linter | problem | location |
|
17
17
|
| FeatureWithoutDescriptionLinter | Feature has no description | <path_to_file>:1 |
|
@@ -0,0 +1,18 @@
|
|
1
|
+
Feature: Feature without name linter
|
2
|
+
|
3
|
+
As a reader of documentation
|
4
|
+
I want every feature to have a name
|
5
|
+
So that I can get an idea of what the feature is about without having to read every use case
|
6
|
+
|
7
|
+
|
8
|
+
Scenario: Linting
|
9
|
+
Given a linter for features without a name
|
10
|
+
And the following feature:
|
11
|
+
"""
|
12
|
+
Feature:
|
13
|
+
This feature does not have a name
|
14
|
+
"""
|
15
|
+
When it is linted
|
16
|
+
Then an error is reported:
|
17
|
+
| linter | problem | location |
|
18
|
+
| FeatureWithoutNameLinter | Feature does not have a name. | <path_to_file>:1 |
|
@@ -18,6 +18,6 @@ Feature: Outline with single example row linter
|
|
18
18
|
| value |
|
19
19
|
"""
|
20
20
|
When it is linted
|
21
|
-
Then an error is reported
|
21
|
+
Then an error is reported:
|
22
22
|
| linter | problem | location |
|
23
23
|
| OutlineWithSingleExampleRowLinter | Outline has only one example row | <path_to_file>:3 |
|
@@ -16,13 +16,13 @@ Feature: Test step with too many characters
|
|
16
16
|
* tea exists and teapots exist and so do cups and saucers and there might be milk in the milk jug together with sugar cubes
|
17
17
|
"""
|
18
18
|
When it is linted
|
19
|
-
Then an error is reported
|
19
|
+
Then an error is reported:
|
20
20
|
| linter | problem | location |
|
21
21
|
| StepWithTooManyCharactersLinter | Step is too long. 121 characters found (max 80) | <path_to_file>:4 |
|
22
22
|
|
23
23
|
|
24
24
|
Scenario: Configuration of step count threshold
|
25
|
-
|
25
|
+
|
26
26
|
Given a linter for test steps with too many characters has been registered
|
27
27
|
And the following configuration file:
|
28
28
|
"""
|
@@ -38,6 +38,6 @@ Feature: Test step with too many characters
|
|
38
38
|
"""
|
39
39
|
When the configuration file is loaded
|
40
40
|
And the feature is linted
|
41
|
-
Then an error is reported
|
41
|
+
Then an error is reported:
|
42
42
|
| linter | problem | location |
|
43
43
|
| StepWithTooManyCharactersLinter | Step is too long. 56 characters found (max 55) | <path_to_file>:4 |
|
@@ -0,0 +1,30 @@
|
|
1
|
+
Feature: Test with no action step linter
|
2
|
+
|
3
|
+
As a tester
|
4
|
+
I want tests to have at least one action step
|
5
|
+
So that I know what is triggering the behavior that is being checked
|
6
|
+
|
7
|
+
|
8
|
+
Scenario: Linting
|
9
|
+
|
10
|
+
Note: Also works on outlines. Also includes steps inherited from backgrounds.
|
11
|
+
|
12
|
+
Given a linter for tests with no action step
|
13
|
+
And the following feature:
|
14
|
+
"""
|
15
|
+
Feature:
|
16
|
+
|
17
|
+
Scenario:
|
18
|
+
Given some setup step
|
19
|
+
Then that's the end of the test
|
20
|
+
"""
|
21
|
+
When it is linted
|
22
|
+
Then an error is reported:
|
23
|
+
| linter | problem | location |
|
24
|
+
| TestWithNoActionStepLinter | Test does not have a 'When' step. | <path_to_file>:3 |
|
25
|
+
|
26
|
+
@wip
|
27
|
+
Scenario: Configuration
|
28
|
+
|
29
|
+
Ideas: Configure whether or not the linter triggers on tests with no steps at all?
|
30
|
+
Configure the keyword(s) that count as an action step?
|
@@ -0,0 +1,23 @@
|
|
1
|
+
Feature: Test with no name linter
|
2
|
+
|
3
|
+
As a reader of documentation
|
4
|
+
I want every scenario to have a name
|
5
|
+
So that I can understand the significance of the use case
|
6
|
+
|
7
|
+
|
8
|
+
Scenario: Linting
|
9
|
+
|
10
|
+
Note: Also works on outlines.
|
11
|
+
|
12
|
+
Given a linter for tests with no name
|
13
|
+
And the following feature:
|
14
|
+
"""
|
15
|
+
Feature:
|
16
|
+
|
17
|
+
Scenario:
|
18
|
+
This scenario has no name
|
19
|
+
"""
|
20
|
+
When it is linted
|
21
|
+
Then an error is reported:
|
22
|
+
| linter | problem | location |
|
23
|
+
| TestWithNoNameLinter | Test does not have a name. | <path_to_file>:3 |
|
@@ -0,0 +1,31 @@
|
|
1
|
+
Feature: Test with no verification step linter
|
2
|
+
|
3
|
+
As a tester
|
4
|
+
I want tests to have at least one verification step
|
5
|
+
So that I know that something is being checked
|
6
|
+
|
7
|
+
|
8
|
+
Scenario: Linting
|
9
|
+
|
10
|
+
Note: Also works on outlines. Also includes steps inherited from backgrounds.
|
11
|
+
|
12
|
+
Given a linter for tests with no verification step
|
13
|
+
And the following feature:
|
14
|
+
"""
|
15
|
+
Feature:
|
16
|
+
|
17
|
+
Scenario:
|
18
|
+
Given some setup step
|
19
|
+
When an action is taken
|
20
|
+
And that's the end of the test
|
21
|
+
"""
|
22
|
+
When it is linted
|
23
|
+
Then an error is reported:
|
24
|
+
| linter | problem | location |
|
25
|
+
| TestWithNoVerificationStepLinter | Test does not have a 'Then' step. | <path_to_file>:3 |
|
26
|
+
|
27
|
+
@wip
|
28
|
+
Scenario: Configuration
|
29
|
+
|
30
|
+
Ideas: Configure whether or not the linter triggers on tests with no steps at all?
|
31
|
+
Configure the keyword(s) that count as a verification step?
|
@@ -28,9 +28,9 @@ Feature: Test with too many steps linter
|
|
28
28
|
* step one too many...
|
29
29
|
"""
|
30
30
|
When it is linted
|
31
|
-
Then an error is reported
|
32
|
-
| linter | problem
|
33
|
-
| TestWithTooManyStepsLinter | Test has too many steps. 11 steps found (max 10) | <path_to_file>:3 |
|
31
|
+
Then an error is reported:
|
32
|
+
| linter | problem | location |
|
33
|
+
| TestWithTooManyStepsLinter | Test has too many steps. 11 steps found (max 10). | <path_to_file>:3 |
|
34
34
|
|
35
35
|
Scenario: Configuration of step count threshold
|
36
36
|
Given a linter for tests with too many steps has been registered
|
@@ -51,6 +51,6 @@ Feature: Test with too many steps linter
|
|
51
51
|
"""
|
52
52
|
When the configuration file is loaded
|
53
53
|
And the feature is linted
|
54
|
-
Then an error is reported
|
55
|
-
| linter | problem
|
56
|
-
| TestWithTooManyStepsLinter | Test has too many steps. 4 steps found (max 3) | <path_to_file>:3 |
|
54
|
+
Then an error is reported:
|
55
|
+
| linter | problem | location |
|
56
|
+
| TestWithTooManyStepsLinter | Test has too many steps. 4 steps found (max 3). | <path_to_file>:3 |
|
@@ -57,6 +57,26 @@ Given("a linter for test steps with too many characters") do
|
|
57
57
|
@linter = CukeLinter::StepWithTooManyCharactersLinter.new
|
58
58
|
end
|
59
59
|
|
60
|
+
Given(/^a linter for tests with no action step$/) do
|
61
|
+
@linter = CukeLinter::TestWithNoActionStepLinter.new
|
62
|
+
end
|
63
|
+
|
64
|
+
Given(/^a linter for tests with no verification step$/) do
|
65
|
+
@linter = CukeLinter::TestWithNoVerificationStepLinter.new
|
66
|
+
end
|
67
|
+
|
68
|
+
Given(/^a linter for features without a name$/) do
|
69
|
+
@linter = CukeLinter::FeatureWithoutNameLinter.new
|
70
|
+
end
|
71
|
+
|
72
|
+
Given(/^a linter for elements with too many tags$/) do
|
73
|
+
@linter = CukeLinter::ElementWithTooManyTagsLinter.new
|
74
|
+
end
|
75
|
+
|
76
|
+
Given(/^a linter for elements with too many tags has been registered$/) do
|
77
|
+
CukeLinter.register_linter(linter: CukeLinter::ElementWithTooManyTagsLinter.new, name: 'ElementWithTooManyTagsLinter')
|
78
|
+
end
|
79
|
+
|
60
80
|
Given(/^a linter for tests with too many steps has been registered$/) do
|
61
81
|
CukeLinter.register_linter(linter: CukeLinter::TestWithTooManyStepsLinter.new, name: 'TestWithTooManyStepsLinter')
|
62
82
|
end
|
@@ -65,6 +85,10 @@ Given("a linter for features without a description") do
|
|
65
85
|
@linter = CukeLinter::FeatureWithoutDescriptionLinter.new
|
66
86
|
end
|
67
87
|
|
88
|
+
Given(/^a linter for tests with no name$/) do
|
89
|
+
@linter = CukeLinter::TestWithNoNameLinter.new
|
90
|
+
end
|
91
|
+
|
68
92
|
Given(/^a linter for test steps with too many characters has been registered$/) do
|
69
93
|
CukeLinter.register_linter(linter: CukeLinter::StepWithTooManyCharactersLinter.new, name: 'StepWithTooManyCharactersLinter')
|
70
94
|
end
|
@@ -14,7 +14,7 @@ Then(/^the resulting output will include the following:$/) do |text|
|
|
14
14
|
expect(@results.chomp).to include(text)
|
15
15
|
end
|
16
16
|
|
17
|
-
Then(/^an error is reported
|
17
|
+
Then(/^an error is reported:$/) do |table|
|
18
18
|
table.hashes.each do |error_record|
|
19
19
|
expect(@results).to include({ linter: error_record['linter'],
|
20
20
|
problem: error_record['problem'],
|
@@ -26,6 +26,10 @@ Then(/^the following linters are registered(?: by default)?$/) do |linter_names|
|
|
26
26
|
expect(CukeLinter.registered_linters.keys).to match_array(linter_names.raw.flatten)
|
27
27
|
end
|
28
28
|
|
29
|
+
Then(/^an error is reported$/) do
|
30
|
+
expect(@results).to_not be_empty
|
31
|
+
end
|
32
|
+
|
29
33
|
Then(/^no error is reported$/) do
|
30
34
|
expect(@results).to be_empty
|
31
35
|
end
|
data/testing/model_factory.rb
CHANGED
@@ -11,7 +11,8 @@ RSpec.describe 'the Command Line Interface' do
|
|
11
11
|
extension: '.feature',
|
12
12
|
text: 'Feature:
|
13
13
|
Scenario: A scenario
|
14
|
-
|
14
|
+
When a step
|
15
|
+
Then a step') }
|
15
16
|
|
16
17
|
# Stuff that is not always needed and so can be lazy instantiated
|
17
18
|
let(:executable_directory) { "#{PROJECT_ROOT}/exe" }
|
@@ -61,7 +62,7 @@ RSpec.describe 'the Command Line Interface' do
|
|
61
62
|
CukeLinter::FileHelper.create_file(directory: test_directory,
|
62
63
|
name: '.cuke_linter',
|
63
64
|
extension: '',
|
64
|
-
text: '
|
65
|
+
text: 'AllLinters:
|
65
66
|
Enabled: false')
|
66
67
|
end
|
67
68
|
|
@@ -100,15 +101,17 @@ RSpec.describe 'the Command Line Interface' do
|
|
100
101
|
let(:file_1) { CukeLinter::FileHelper.create_file(directory: test_directory,
|
101
102
|
name: 'some',
|
102
103
|
extension: '.feature',
|
103
|
-
text: 'Feature:
|
104
|
+
text: 'Feature: Some feature
|
104
105
|
Scenario: A scenario
|
105
|
-
|
106
|
+
When a step
|
107
|
+
Then a step') }
|
106
108
|
let(:file_2) { CukeLinter::FileHelper.create_file(directory: test_directory,
|
107
109
|
name: 'a_directory/with_a',
|
108
110
|
extension: '.feature',
|
109
|
-
text: 'Feature:
|
111
|
+
text: 'Feature: Some feature
|
110
112
|
Scenario: A scenario
|
111
|
-
|
113
|
+
When a step
|
114
|
+
Then a step') }
|
112
115
|
let(:file_1_path) { file_1 }
|
113
116
|
let(:file_2_directory) { File.dirname(file_2) }
|
114
117
|
let(:command) { "bundle exec ruby #{executable_path} #{flag} #{file_1_path} #{flag} #{file_2_directory}" }
|
@@ -159,9 +162,10 @@ RSpec.describe 'the Command Line Interface' do
|
|
159
162
|
context 'with formatter arguments' do
|
160
163
|
let(:linted_file) { CukeLinter::FileHelper.create_file(name: 'some',
|
161
164
|
extension: '.feature',
|
162
|
-
text: 'Feature:
|
165
|
+
text: 'Feature: Some feature
|
163
166
|
Scenario: A scenario
|
164
|
-
|
167
|
+
When a step
|
168
|
+
Then a step') }
|
165
169
|
let(:formatter_class) { 'AFakeFormatter' }
|
166
170
|
let(:formatter_class_in_module) { 'CukeLinter::AnotherFakeFormatter' }
|
167
171
|
let(:formatter_class_file) { CukeLinter::FileHelper.create_file(extension: '.rb',
|
@@ -224,9 +228,10 @@ RSpec.describe 'the Command Line Interface' do
|
|
224
228
|
let(:other_output_location) { "#{CukeLinter::FileHelper.create_directory}/other_output.txt" }
|
225
229
|
let(:linted_file) { CukeLinter::FileHelper.create_file(name: 'some',
|
226
230
|
extension: '.feature',
|
227
|
-
text: 'Feature:
|
231
|
+
text: 'Feature: Some feature
|
228
232
|
Scenario: A scenario
|
229
|
-
|
233
|
+
When a step
|
234
|
+
Then a step') }
|
230
235
|
let(:formatter_class_1) { 'AFakeFormatter' }
|
231
236
|
let(:formatter_class_2) { 'AnotherFakeFormatter' }
|
232
237
|
let(:formatter_class_file) { CukeLinter::FileHelper.create_file(extension: '.rb',
|
@@ -386,7 +391,7 @@ RSpec.describe 'the Command Line Interface' do
|
|
386
391
|
|
387
392
|
let(:config_file) { CukeLinter::FileHelper.create_file(name: 'my_config_file',
|
388
393
|
extension: '.yml',
|
389
|
-
text: '
|
394
|
+
text: 'AllLinters:
|
390
395
|
Enabled: false') }
|
391
396
|
let(:command) { "bundle exec ruby #{executable_path} #{flag} #{config_file}" }
|
392
397
|
|
@@ -176,10 +176,14 @@ RSpec.describe CukeLinter do
|
|
176
176
|
it 'has a default set of registered linters' do
|
177
177
|
expect(subject.registered_linters.keys).to include('BackgroundDoesMoreThanSetupLinter')
|
178
178
|
expect(subject.registered_linters['BackgroundDoesMoreThanSetupLinter']).to be_a(CukeLinter::BackgroundDoesMoreThanSetupLinter)
|
179
|
+
expect(subject.registered_linters.keys).to include('ElementWithTooManyTagsLinter')
|
180
|
+
expect(subject.registered_linters['ElementWithTooManyTagsLinter']).to be_a(CukeLinter::ElementWithTooManyTagsLinter)
|
179
181
|
expect(subject.registered_linters.keys).to include('ExampleWithoutNameLinter')
|
180
182
|
expect(subject.registered_linters['ExampleWithoutNameLinter']).to be_a(CukeLinter::ExampleWithoutNameLinter)
|
181
183
|
expect(subject.registered_linters.keys).to include('FeatureWithoutDescriptionLinter')
|
182
184
|
expect(subject.registered_linters['FeatureWithoutDescriptionLinter']).to be_a(CukeLinter::FeatureWithoutDescriptionLinter)
|
185
|
+
expect(subject.registered_linters.keys).to include('FeatureWithoutNameLinter')
|
186
|
+
expect(subject.registered_linters['FeatureWithoutNameLinter']).to be_a(CukeLinter::FeatureWithoutNameLinter)
|
183
187
|
expect(subject.registered_linters.keys).to include('FeatureWithoutScenariosLinter')
|
184
188
|
expect(subject.registered_linters['FeatureWithoutScenariosLinter']).to be_a(CukeLinter::FeatureWithoutScenariosLinter)
|
185
189
|
expect(subject.registered_linters.keys).to include('OutlineWithSingleExampleRowLinter')
|
@@ -190,6 +194,12 @@ RSpec.describe CukeLinter do
|
|
190
194
|
expect(subject.registered_linters['StepWithEndPeriodLinter']).to be_a(CukeLinter::StepWithEndPeriodLinter)
|
191
195
|
expect(subject.registered_linters.keys).to include('StepWithTooManyCharactersLinter')
|
192
196
|
expect(subject.registered_linters['StepWithTooManyCharactersLinter']).to be_a(CukeLinter::StepWithTooManyCharactersLinter)
|
197
|
+
expect(subject.registered_linters.keys).to include('TestWithNoActionStepLinter')
|
198
|
+
expect(subject.registered_linters['TestWithNoActionStepLinter']).to be_a(CukeLinter::TestWithNoActionStepLinter)
|
199
|
+
expect(subject.registered_linters.keys).to include('TestWithNoNameLinter')
|
200
|
+
expect(subject.registered_linters['TestWithNoNameLinter']).to be_a(CukeLinter::TestWithNoNameLinter)
|
201
|
+
expect(subject.registered_linters.keys).to include('TestWithNoVerificationStepLinter')
|
202
|
+
expect(subject.registered_linters['TestWithNoVerificationStepLinter']).to be_a(CukeLinter::TestWithNoVerificationStepLinter)
|
193
203
|
expect(subject.registered_linters.keys).to include('TestWithTooManyStepsLinter')
|
194
204
|
expect(subject.registered_linters['TestWithTooManyStepsLinter']).to be_a(CukeLinter::TestWithTooManyStepsLinter)
|
195
205
|
end
|
@@ -236,6 +246,33 @@ RSpec.describe CukeLinter do
|
|
236
246
|
expect(subject.registered_linters['FakeLinter1']).to be nil
|
237
247
|
end
|
238
248
|
|
249
|
+
it 'can apply a property to all linters' do
|
250
|
+
configuration = { 'AllLinters' => { 'Enabled' => false } }
|
251
|
+
|
252
|
+
# Restore the default linters
|
253
|
+
CukeLinter.reset_linters
|
254
|
+
|
255
|
+
# Also add some custom ones
|
256
|
+
CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter, name: 'Foo')
|
257
|
+
|
258
|
+
|
259
|
+
subject.load_configuration(config: configuration)
|
260
|
+
|
261
|
+
expect(subject.registered_linters).to be_empty
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'uses linter specific properties over general properties' do
|
265
|
+
configuration = { 'AllLinters' => { 'Enabled' => false },
|
266
|
+
'FakeLinter1' => { 'Enabled' => true } }
|
267
|
+
|
268
|
+
CukeLinter.register_linter(linter: CukeLinter::LinterFactory.generate_fake_linter, name: 'FakeLinter1')
|
269
|
+
expect(subject.registered_linters['FakeLinter1']).to_not be nil
|
270
|
+
|
271
|
+
subject.load_configuration(config: configuration)
|
272
|
+
|
273
|
+
expect(subject.registered_linters['FakeLinter1']).to_not be nil
|
274
|
+
end
|
275
|
+
|
239
276
|
it 'even unregisters non-configurable disabled linters' do
|
240
277
|
config = { 'FakeLinter' => { 'Enabled' => false } }
|
241
278
|
configuration_file = CukeLinter::FileHelper.create_file(name: '.cuke_linter', extension: '', text: config.to_yaml)
|