scss_lint 0.38.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 +7 -0
- data/bin/scss-lint +6 -0
- data/config/default.yml +205 -0
- data/data/prefixed-identifiers/base.txt +107 -0
- data/data/prefixed-identifiers/bourbon.txt +71 -0
- data/data/properties.txt +477 -0
- data/data/property-sort-orders/concentric.txt +134 -0
- data/data/property-sort-orders/recess.txt +149 -0
- data/data/property-sort-orders/smacss.txt +137 -0
- data/lib/scss_lint.rb +31 -0
- data/lib/scss_lint/cli.rb +215 -0
- data/lib/scss_lint/config.rb +251 -0
- data/lib/scss_lint/constants.rb +8 -0
- data/lib/scss_lint/control_comment_processor.rb +126 -0
- data/lib/scss_lint/engine.rb +56 -0
- data/lib/scss_lint/exceptions.rb +21 -0
- data/lib/scss_lint/file_finder.rb +68 -0
- data/lib/scss_lint/lint.rb +24 -0
- data/lib/scss_lint/linter.rb +161 -0
- data/lib/scss_lint/linter/bang_format.rb +52 -0
- data/lib/scss_lint/linter/border_zero.rb +39 -0
- data/lib/scss_lint/linter/color_keyword.rb +32 -0
- data/lib/scss_lint/linter/color_variable.rb +60 -0
- data/lib/scss_lint/linter/comment.rb +21 -0
- data/lib/scss_lint/linter/compass.rb +7 -0
- data/lib/scss_lint/linter/compass/property_with_mixin.rb +47 -0
- data/lib/scss_lint/linter/debug_statement.rb +10 -0
- data/lib/scss_lint/linter/declaration_order.rb +71 -0
- data/lib/scss_lint/linter/duplicate_property.rb +58 -0
- data/lib/scss_lint/linter/else_placement.rb +48 -0
- data/lib/scss_lint/linter/empty_line_between_blocks.rb +85 -0
- data/lib/scss_lint/linter/empty_rule.rb +11 -0
- data/lib/scss_lint/linter/final_newline.rb +20 -0
- data/lib/scss_lint/linter/hex_length.rb +56 -0
- data/lib/scss_lint/linter/hex_notation.rb +38 -0
- data/lib/scss_lint/linter/hex_validation.rb +23 -0
- data/lib/scss_lint/linter/id_selector.rb +10 -0
- data/lib/scss_lint/linter/import_path.rb +62 -0
- data/lib/scss_lint/linter/important_rule.rb +12 -0
- data/lib/scss_lint/linter/indentation.rb +197 -0
- data/lib/scss_lint/linter/leading_zero.rb +49 -0
- data/lib/scss_lint/linter/mergeable_selector.rb +60 -0
- data/lib/scss_lint/linter/name_format.rb +117 -0
- data/lib/scss_lint/linter/nesting_depth.rb +24 -0
- data/lib/scss_lint/linter/placeholder_in_extend.rb +22 -0
- data/lib/scss_lint/linter/property_count.rb +44 -0
- data/lib/scss_lint/linter/property_sort_order.rb +198 -0
- data/lib/scss_lint/linter/property_spelling.rb +49 -0
- data/lib/scss_lint/linter/property_units.rb +59 -0
- data/lib/scss_lint/linter/qualifying_element.rb +42 -0
- data/lib/scss_lint/linter/selector_depth.rb +64 -0
- data/lib/scss_lint/linter/selector_format.rb +102 -0
- data/lib/scss_lint/linter/shorthand.rb +139 -0
- data/lib/scss_lint/linter/single_line_per_property.rb +59 -0
- data/lib/scss_lint/linter/single_line_per_selector.rb +35 -0
- data/lib/scss_lint/linter/space_after_comma.rb +110 -0
- data/lib/scss_lint/linter/space_after_property_colon.rb +92 -0
- data/lib/scss_lint/linter/space_after_property_name.rb +27 -0
- data/lib/scss_lint/linter/space_before_brace.rb +72 -0
- data/lib/scss_lint/linter/space_between_parens.rb +35 -0
- data/lib/scss_lint/linter/string_quotes.rb +94 -0
- data/lib/scss_lint/linter/trailing_semicolon.rb +67 -0
- data/lib/scss_lint/linter/trailing_zero.rb +41 -0
- data/lib/scss_lint/linter/unnecessary_mantissa.rb +42 -0
- data/lib/scss_lint/linter/unnecessary_parent_reference.rb +49 -0
- data/lib/scss_lint/linter/url_format.rb +56 -0
- data/lib/scss_lint/linter/url_quotes.rb +27 -0
- data/lib/scss_lint/linter/variable_for_property.rb +30 -0
- data/lib/scss_lint/linter/vendor_prefix.rb +64 -0
- data/lib/scss_lint/linter/zero_unit.rb +39 -0
- data/lib/scss_lint/linter_registry.rb +26 -0
- data/lib/scss_lint/location.rb +38 -0
- data/lib/scss_lint/options.rb +109 -0
- data/lib/scss_lint/rake_task.rb +106 -0
- data/lib/scss_lint/reporter.rb +18 -0
- data/lib/scss_lint/reporter/config_reporter.rb +26 -0
- data/lib/scss_lint/reporter/default_reporter.rb +27 -0
- data/lib/scss_lint/reporter/files_reporter.rb +8 -0
- data/lib/scss_lint/reporter/json_reporter.rb +30 -0
- data/lib/scss_lint/reporter/xml_reporter.rb +33 -0
- data/lib/scss_lint/runner.rb +51 -0
- data/lib/scss_lint/sass/script.rb +78 -0
- data/lib/scss_lint/sass/tree.rb +168 -0
- data/lib/scss_lint/selector_visitor.rb +34 -0
- data/lib/scss_lint/utils.rb +112 -0
- data/lib/scss_lint/version.rb +4 -0
- data/spec/scss_lint/cli_spec.rb +177 -0
- data/spec/scss_lint/config_spec.rb +253 -0
- data/spec/scss_lint/engine_spec.rb +24 -0
- data/spec/scss_lint/file_finder_spec.rb +134 -0
- data/spec/scss_lint/linter/bang_format_spec.rb +121 -0
- data/spec/scss_lint/linter/border_zero_spec.rb +118 -0
- data/spec/scss_lint/linter/color_keyword_spec.rb +83 -0
- data/spec/scss_lint/linter/color_variable_spec.rb +155 -0
- data/spec/scss_lint/linter/comment_spec.rb +79 -0
- data/spec/scss_lint/linter/compass/property_with_mixin_spec.rb +55 -0
- data/spec/scss_lint/linter/debug_statement_spec.rb +21 -0
- data/spec/scss_lint/linter/declaration_order_spec.rb +575 -0
- data/spec/scss_lint/linter/duplicate_property_spec.rb +189 -0
- data/spec/scss_lint/linter/else_placement_spec.rb +106 -0
- data/spec/scss_lint/linter/empty_line_between_blocks_spec.rb +276 -0
- data/spec/scss_lint/linter/empty_rule_spec.rb +27 -0
- data/spec/scss_lint/linter/final_newline_spec.rb +49 -0
- data/spec/scss_lint/linter/hex_length_spec.rb +104 -0
- data/spec/scss_lint/linter/hex_notation_spec.rb +104 -0
- data/spec/scss_lint/linter/hex_validation_spec.rb +40 -0
- data/spec/scss_lint/linter/id_selector_spec.rb +62 -0
- data/spec/scss_lint/linter/import_path_spec.rb +300 -0
- data/spec/scss_lint/linter/important_rule_spec.rb +43 -0
- data/spec/scss_lint/linter/indentation_spec.rb +347 -0
- data/spec/scss_lint/linter/leading_zero_spec.rb +233 -0
- data/spec/scss_lint/linter/mergeable_selector_spec.rb +283 -0
- data/spec/scss_lint/linter/name_format_spec.rb +282 -0
- data/spec/scss_lint/linter/nesting_depth_spec.rb +114 -0
- data/spec/scss_lint/linter/placeholder_in_extend_spec.rb +63 -0
- data/spec/scss_lint/linter/property_count_spec.rb +104 -0
- data/spec/scss_lint/linter/property_sort_order_spec.rb +482 -0
- data/spec/scss_lint/linter/property_spelling_spec.rb +84 -0
- data/spec/scss_lint/linter/property_units_spec.rb +229 -0
- data/spec/scss_lint/linter/qualifying_element_spec.rb +125 -0
- data/spec/scss_lint/linter/selector_depth_spec.rb +159 -0
- data/spec/scss_lint/linter/selector_format_spec.rb +632 -0
- data/spec/scss_lint/linter/shorthand_spec.rb +198 -0
- data/spec/scss_lint/linter/single_line_per_property_spec.rb +73 -0
- data/spec/scss_lint/linter/single_line_per_selector_spec.rb +130 -0
- data/spec/scss_lint/linter/space_after_comma_spec.rb +332 -0
- data/spec/scss_lint/linter/space_after_property_colon_spec.rb +373 -0
- data/spec/scss_lint/linter/space_after_property_name_spec.rb +37 -0
- data/spec/scss_lint/linter/space_before_brace_spec.rb +829 -0
- data/spec/scss_lint/linter/space_between_parens_spec.rb +263 -0
- data/spec/scss_lint/linter/string_quotes_spec.rb +335 -0
- data/spec/scss_lint/linter/trailing_semicolon_spec.rb +304 -0
- data/spec/scss_lint/linter/trailing_zero_spec.rb +176 -0
- data/spec/scss_lint/linter/unnecessary_mantissa_spec.rb +67 -0
- data/spec/scss_lint/linter/unnecessary_parent_reference_spec.rb +98 -0
- data/spec/scss_lint/linter/url_format_spec.rb +55 -0
- data/spec/scss_lint/linter/url_quotes_spec.rb +73 -0
- data/spec/scss_lint/linter/variable_for_property_spec.rb +145 -0
- data/spec/scss_lint/linter/vendor_prefix_spec.rb +371 -0
- data/spec/scss_lint/linter/zero_unit_spec.rb +113 -0
- data/spec/scss_lint/linter_registry_spec.rb +50 -0
- data/spec/scss_lint/linter_spec.rb +292 -0
- data/spec/scss_lint/location_spec.rb +42 -0
- data/spec/scss_lint/options_spec.rb +34 -0
- data/spec/scss_lint/rake_task_spec.rb +43 -0
- data/spec/scss_lint/reporter/config_reporter_spec.rb +42 -0
- data/spec/scss_lint/reporter/default_reporter_spec.rb +73 -0
- data/spec/scss_lint/reporter/files_reporter_spec.rb +38 -0
- data/spec/scss_lint/reporter/json_reporter_spec.rb +96 -0
- data/spec/scss_lint/reporter/xml_reporter_spec.rb +103 -0
- data/spec/scss_lint/reporter_spec.rb +11 -0
- data/spec/scss_lint/runner_spec.rb +123 -0
- data/spec/scss_lint/selector_visitor_spec.rb +264 -0
- data/spec/spec_helper.rb +34 -0
- data/spec/support/isolated_environment.rb +25 -0
- data/spec/support/matchers/report_lint.rb +48 -0
- metadata +328 -0
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe SCSSLint::Linter::ZeroUnit do
|
|
4
|
+
context 'when no properties exist' do
|
|
5
|
+
let(:scss) { <<-SCSS }
|
|
6
|
+
p {
|
|
7
|
+
}
|
|
8
|
+
SCSS
|
|
9
|
+
|
|
10
|
+
it { should_not report_lint }
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context 'when properties with unit-less zeros exist' do
|
|
14
|
+
let(:scss) { <<-SCSS }
|
|
15
|
+
p {
|
|
16
|
+
margin: 0;
|
|
17
|
+
}
|
|
18
|
+
SCSS
|
|
19
|
+
|
|
20
|
+
it { should_not report_lint }
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
context 'when properties with non-zero values exist' do
|
|
24
|
+
let(:scss) { <<-SCSS }
|
|
25
|
+
p {
|
|
26
|
+
margin: 5px;
|
|
27
|
+
line-height: 1.5em;
|
|
28
|
+
}
|
|
29
|
+
SCSS
|
|
30
|
+
|
|
31
|
+
it { should_not report_lint }
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context 'when properties with zero values contain units' do
|
|
35
|
+
let(:scss) { <<-SCSS }
|
|
36
|
+
p {
|
|
37
|
+
margin: 0px;
|
|
38
|
+
}
|
|
39
|
+
SCSS
|
|
40
|
+
|
|
41
|
+
it { should report_lint line: 2 }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
context 'when properties with multiple zero values containing units exist' do
|
|
45
|
+
let(:scss) { <<-SCSS }
|
|
46
|
+
p {
|
|
47
|
+
margin: 5em 0em 2em 0px;
|
|
48
|
+
}
|
|
49
|
+
SCSS
|
|
50
|
+
|
|
51
|
+
it { should report_lint line: 2, count: 2 }
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context 'when function call contains a zero value with units' do
|
|
55
|
+
let(:scss) { <<-SCSS }
|
|
56
|
+
p {
|
|
57
|
+
margin: some-function(0em);
|
|
58
|
+
}
|
|
59
|
+
SCSS
|
|
60
|
+
|
|
61
|
+
it { should report_lint line: 2 }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context 'when mixin include contains a zero value with units' do
|
|
65
|
+
let(:scss) { <<-SCSS }
|
|
66
|
+
p {
|
|
67
|
+
@include some-mixin(0em);
|
|
68
|
+
}
|
|
69
|
+
SCSS
|
|
70
|
+
|
|
71
|
+
it { should report_lint line: 2 }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
context 'when string contains a zero value with units' do
|
|
75
|
+
let(:scss) { <<-SCSS }
|
|
76
|
+
p {
|
|
77
|
+
content: func("0em");
|
|
78
|
+
}
|
|
79
|
+
SCSS
|
|
80
|
+
|
|
81
|
+
it { should_not report_lint }
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
context 'when property value has a ".0" fractional component' do
|
|
85
|
+
let(:scss) { <<-SCSS }
|
|
86
|
+
p {
|
|
87
|
+
margin: 4.0em;
|
|
88
|
+
}
|
|
89
|
+
SCSS
|
|
90
|
+
|
|
91
|
+
it { should_not report_lint }
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context 'when property value has a color hex with a leading 0' do
|
|
95
|
+
let(:scss) { <<-SCSS }
|
|
96
|
+
p {
|
|
97
|
+
color: #0af;
|
|
98
|
+
}
|
|
99
|
+
SCSS
|
|
100
|
+
|
|
101
|
+
it { should_not report_lint }
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
context 'when property with zero value is a dimension' do
|
|
105
|
+
let(:scss) { <<-SCSS }
|
|
106
|
+
p {
|
|
107
|
+
transition-delay: 0s;
|
|
108
|
+
}
|
|
109
|
+
SCSS
|
|
110
|
+
|
|
111
|
+
it { should_not report_lint }
|
|
112
|
+
end
|
|
113
|
+
end
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe SCSSLint::LinterRegistry do
|
|
4
|
+
context 'when including the LinterRegistry module' do
|
|
5
|
+
after do
|
|
6
|
+
described_class.linters.delete(FakeLinter)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it 'adds the linter to the set of registered linters' do
|
|
10
|
+
expect do
|
|
11
|
+
class FakeLinter < SCSSLint::Linter
|
|
12
|
+
include SCSSLint::LinterRegistry
|
|
13
|
+
end
|
|
14
|
+
end.to change { described_class.linters.count }.by(1)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
describe '.extract_linters_from' do
|
|
19
|
+
module SCSSLint
|
|
20
|
+
class Linter::SomeLinter < Linter; end
|
|
21
|
+
class Linter::SomeOtherLinter < Linter; end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
let(:linters) do
|
|
25
|
+
[SCSSLint::Linter::SomeLinter, SCSSLint::Linter::SomeOtherLinter]
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
before do
|
|
29
|
+
described_class.stub(:linters).and_return(linters)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context 'when the linters exist' do
|
|
33
|
+
let(:linter_names) { %w[SomeLinter SomeOtherLinter] }
|
|
34
|
+
|
|
35
|
+
it 'returns the linters' do
|
|
36
|
+
subject.extract_linters_from(linter_names).should == linters
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "when the linters don't exist" do
|
|
41
|
+
let(:linter_names) { ['SomeRandomLinter'] }
|
|
42
|
+
|
|
43
|
+
it 'raises an error' do
|
|
44
|
+
expect do
|
|
45
|
+
subject.extract_linters_from(linter_names)
|
|
46
|
+
end.to raise_error(SCSSLint::NoSuchLinter)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe SCSSLint::Linter do
|
|
4
|
+
describe 'control comments' do
|
|
5
|
+
let(:linter_config) { {} }
|
|
6
|
+
subject { SCSSLint::Linter::Fake.new }
|
|
7
|
+
|
|
8
|
+
module SCSSLint
|
|
9
|
+
class Linter::Fake < SCSSLint::Linter
|
|
10
|
+
def visit_prop(node)
|
|
11
|
+
return unless node.value.to_sass.strip == 'fail1'
|
|
12
|
+
add_lint(node, 'everything offends me')
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def visit_class(klass)
|
|
16
|
+
return unless klass.to_s == '.badClass'
|
|
17
|
+
add_lint(klass, 'a bad class was used')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Bypasses the visit order so a control comment might not be reached before a lint is
|
|
21
|
+
# added
|
|
22
|
+
def visit_rule(node)
|
|
23
|
+
node.children
|
|
24
|
+
.select { |child| child.is_a?(Sass::Tree::PropNode) }
|
|
25
|
+
.reject { |prop| prop.name.any? { |item| item.is_a?(Sass::Script::Node) } }
|
|
26
|
+
.each do |prop|
|
|
27
|
+
add_lint(prop, 'everything offends me 2') if prop.value.to_sass.strip == 'fail2'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
yield
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
context 'when a disable is not present' do
|
|
36
|
+
let(:scss) { <<-SCSS }
|
|
37
|
+
p {
|
|
38
|
+
border: fail1;
|
|
39
|
+
|
|
40
|
+
a {
|
|
41
|
+
border: fail1;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
SCSS
|
|
45
|
+
|
|
46
|
+
it { should report_lint }
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context 'when a disable is present at the top level' do
|
|
50
|
+
let(:scss) { <<-SCSS }
|
|
51
|
+
// scss-lint:disable Fake
|
|
52
|
+
p {
|
|
53
|
+
border: fail1;
|
|
54
|
+
|
|
55
|
+
a {
|
|
56
|
+
border: fail1;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
SCSS
|
|
60
|
+
|
|
61
|
+
it { should_not report_lint }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
context 'when a disable is present at the top level for another linter' do
|
|
65
|
+
let(:scss) { <<-SCSS }
|
|
66
|
+
// scss-lint:disable Bogus
|
|
67
|
+
p {
|
|
68
|
+
border: fail1;
|
|
69
|
+
}
|
|
70
|
+
p {
|
|
71
|
+
border: bogus;
|
|
72
|
+
}
|
|
73
|
+
SCSS
|
|
74
|
+
|
|
75
|
+
it { should report_lint lint: 3 }
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context 'when a linter is disabled then enabled again' do
|
|
79
|
+
let(:scss) { <<-SCSS }
|
|
80
|
+
// scss-lint:disable Fake
|
|
81
|
+
p {
|
|
82
|
+
border: fail1;
|
|
83
|
+
}
|
|
84
|
+
// scss-lint:enable Fake
|
|
85
|
+
p {
|
|
86
|
+
border: fail1;
|
|
87
|
+
}
|
|
88
|
+
SCSS
|
|
89
|
+
|
|
90
|
+
it { should_not report_lint line: 3 }
|
|
91
|
+
it { should report_lint line: 7 }
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
context 'when a linter is disabled within a rule' do
|
|
95
|
+
let(:scss) { <<-SCSS }
|
|
96
|
+
p {
|
|
97
|
+
// scss-lint:disable Fake
|
|
98
|
+
border: fail1;
|
|
99
|
+
|
|
100
|
+
a {
|
|
101
|
+
border: fail1;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
p {
|
|
106
|
+
border: fail1;
|
|
107
|
+
}
|
|
108
|
+
SCSS
|
|
109
|
+
|
|
110
|
+
it { should_not report_lint line: 3 }
|
|
111
|
+
it { should_not report_lint line: 6 }
|
|
112
|
+
it { should report_lint line: 11 }
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
context 'when more than one linter is disabled' do
|
|
116
|
+
let(:scss) { <<-SCSS }
|
|
117
|
+
// scss-lint:disable Bogus, Fake
|
|
118
|
+
p {
|
|
119
|
+
border: fail1;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
p {
|
|
123
|
+
border: bogus;
|
|
124
|
+
}
|
|
125
|
+
SCSS
|
|
126
|
+
|
|
127
|
+
it { should_not report_lint }
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
context 'when more than one linter is disabled without spaces between the linter names' do
|
|
131
|
+
let(:scss) { <<-SCSS }
|
|
132
|
+
// scss-lint:disable Fake,Bogus
|
|
133
|
+
p {
|
|
134
|
+
border: fail1;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
p {
|
|
138
|
+
border: Bogus;
|
|
139
|
+
}
|
|
140
|
+
SCSS
|
|
141
|
+
|
|
142
|
+
it { should_not report_lint }
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
context 'when more than one linter is disabled without commas between the linter names' do
|
|
146
|
+
let(:scss) { <<-SCSS }
|
|
147
|
+
// scss-lint:disable Fake Bogus
|
|
148
|
+
p {
|
|
149
|
+
border: fail1;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
p {
|
|
153
|
+
border: bogus;
|
|
154
|
+
}
|
|
155
|
+
SCSS
|
|
156
|
+
|
|
157
|
+
it { should_not report_lint }
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
context 'when two linters are disabled and only one is reenabled' do
|
|
161
|
+
let(:scss) { <<-SCSS }
|
|
162
|
+
// scss-lint:disable Fake, Bogus
|
|
163
|
+
p {
|
|
164
|
+
border: fail1;
|
|
165
|
+
}
|
|
166
|
+
// scss-lint:enable Fake
|
|
167
|
+
|
|
168
|
+
p {
|
|
169
|
+
margin: fail1;
|
|
170
|
+
border: bogus;
|
|
171
|
+
}
|
|
172
|
+
SCSS
|
|
173
|
+
|
|
174
|
+
it { should_not report_lint line: 3 }
|
|
175
|
+
it { should report_lint line: 8 }
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
context 'when all linters are disabled' do
|
|
179
|
+
let(:scss) { <<-SCSS }
|
|
180
|
+
// scss-lint:disable all
|
|
181
|
+
p {
|
|
182
|
+
border: fail1;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
p {
|
|
186
|
+
margin: fail1;
|
|
187
|
+
border: bogus;
|
|
188
|
+
}
|
|
189
|
+
SCSS
|
|
190
|
+
|
|
191
|
+
it { should_not report_lint }
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
context 'when all linters are disabled and then one is re-enabled' do
|
|
195
|
+
let(:scss) { <<-SCSS }
|
|
196
|
+
// scss-lint:disable all
|
|
197
|
+
p {
|
|
198
|
+
border: fail1;
|
|
199
|
+
}
|
|
200
|
+
// scss-lint:enable Fake
|
|
201
|
+
|
|
202
|
+
p {
|
|
203
|
+
margin: fail1;
|
|
204
|
+
border: bogus;
|
|
205
|
+
}
|
|
206
|
+
SCSS
|
|
207
|
+
|
|
208
|
+
it { should_not report_lint line: 3 }
|
|
209
|
+
it { should report_lint line: 8 }
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
context 'when a linter is bypassing the visit tree order' do
|
|
213
|
+
let(:scss) { <<-SCSS }
|
|
214
|
+
p {
|
|
215
|
+
// scss-lint:disable Fake
|
|
216
|
+
border: fail2;
|
|
217
|
+
}
|
|
218
|
+
SCSS
|
|
219
|
+
|
|
220
|
+
it { should_not report_lint }
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
context 'when the command comment is next to other comments' do
|
|
224
|
+
let(:scss) { <<-SCSS }
|
|
225
|
+
p {
|
|
226
|
+
// scss-lint:disable Fake
|
|
227
|
+
// more comments
|
|
228
|
+
border: fail2;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
p {
|
|
232
|
+
// more comments
|
|
233
|
+
// scss-lint:disable Fake
|
|
234
|
+
border: fail2;
|
|
235
|
+
}
|
|
236
|
+
SCSS
|
|
237
|
+
|
|
238
|
+
it { should_not report_lint }
|
|
239
|
+
end
|
|
240
|
+
|
|
241
|
+
context 'when the command comment is at the end of a statement' do
|
|
242
|
+
let(:scss) { <<-SCSS }
|
|
243
|
+
p {
|
|
244
|
+
border: fail1; // scss-lint:disable Fake
|
|
245
|
+
border: fail1;
|
|
246
|
+
}
|
|
247
|
+
SCSS
|
|
248
|
+
|
|
249
|
+
it { should_not report_lint line: 2 }
|
|
250
|
+
it { should report_lint line: 3 }
|
|
251
|
+
end
|
|
252
|
+
|
|
253
|
+
context 'when global disable comes before an @include' do
|
|
254
|
+
let(:scss) { <<-SCSS }
|
|
255
|
+
// scss-lint:disable Fake
|
|
256
|
+
p {
|
|
257
|
+
border: fail1;
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
@include mixin(param) {
|
|
261
|
+
border: fail1;
|
|
262
|
+
}
|
|
263
|
+
SCSS
|
|
264
|
+
|
|
265
|
+
it { should_not report_lint }
|
|
266
|
+
end
|
|
267
|
+
|
|
268
|
+
context 'when // control comment appears in the middle of a comma sequence' do
|
|
269
|
+
let(:scss) { <<-SCSS }
|
|
270
|
+
.badClass, // scss-lint:disable Fake
|
|
271
|
+
.good-selector {
|
|
272
|
+
border: fail1;
|
|
273
|
+
}
|
|
274
|
+
SCSS
|
|
275
|
+
|
|
276
|
+
it { should_not report_lint line: 1 }
|
|
277
|
+
it { should report_lint line: 3 }
|
|
278
|
+
end
|
|
279
|
+
|
|
280
|
+
context 'when /* control comment appears in the middle of a comma sequence' do
|
|
281
|
+
let(:scss) { <<-SCSS }
|
|
282
|
+
.badClass, /* scss-lint:disable Fake */
|
|
283
|
+
.good-selector {
|
|
284
|
+
border: fail1;
|
|
285
|
+
}
|
|
286
|
+
SCSS
|
|
287
|
+
|
|
288
|
+
it { should_not report_lint line: 1 }
|
|
289
|
+
it { should report_lint line: 3 }
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
end
|