scss-lint 0.25.1 → 0.26.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/config/default.yml +10 -1
- data/data/property-sort-orders/concentric.txt +99 -0
- data/lib/scss_lint.rb +1 -0
- data/lib/scss_lint/cli.rb +9 -3
- data/lib/scss_lint/exceptions.rb +4 -0
- data/lib/scss_lint/linter.rb +10 -1
- data/lib/scss_lint/linter/capitalization_in_selector.rb +14 -6
- data/lib/scss_lint/linter/compass/property_with_mixin.rb +9 -2
- data/lib/scss_lint/linter/indentation.rb +28 -6
- data/lib/scss_lint/linter/property_sort_order.rb +61 -9
- data/lib/scss_lint/linter/single_line_per_property.rb +53 -0
- data/lib/scss_lint/linter/single_line_per_selector.rb +6 -1
- data/lib/scss_lint/linter/space_after_comma.rb +27 -19
- data/lib/scss_lint/linter/space_before_brace.rb +5 -4
- data/lib/scss_lint/linter/trailing_semicolon.rb +53 -0
- data/lib/scss_lint/linter/unnecessary_parent_reference.rb +36 -0
- data/lib/scss_lint/reporter/default_reporter.rb +7 -2
- data/lib/scss_lint/reporter/xml_reporter.rb +2 -1
- data/lib/scss_lint/runner.rb +7 -3
- data/lib/scss_lint/version.rb +1 -1
- data/spec/scss_lint/cli_spec.rb +314 -0
- data/spec/scss_lint/config_spec.rb +439 -0
- data/spec/scss_lint/engine_spec.rb +24 -0
- data/spec/scss_lint/linter/border_zero_spec.rb +84 -0
- data/spec/scss_lint/linter/capitalization_in_selector_spec.rb +71 -0
- data/spec/scss_lint/linter/color_keyword_spec.rb +83 -0
- data/spec/scss_lint/linter/comment_spec.rb +55 -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 +94 -0
- data/spec/scss_lint/linter/duplicate_property_spec.rb +176 -0
- data/spec/scss_lint/linter/else_placement_spec.rb +106 -0
- data/spec/scss_lint/linter/empty_line_between_blocks_spec.rb +263 -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 +36 -0
- data/spec/scss_lint/linter/id_with_extraneous_selector_spec.rb +139 -0
- data/spec/scss_lint/linter/indentation_spec.rb +242 -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 +206 -0
- data/spec/scss_lint/linter/placeholder_in_extend_spec.rb +63 -0
- data/spec/scss_lint/linter/property_sort_order_spec.rb +246 -0
- data/spec/scss_lint/linter/property_spelling_spec.rb +57 -0
- data/spec/scss_lint/linter/selector_depth_spec.rb +159 -0
- data/spec/scss_lint/linter/shorthand_spec.rb +172 -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 +121 -0
- data/spec/scss_lint/linter/space_after_comma_spec.rb +315 -0
- data/spec/scss_lint/linter/space_after_property_colon_spec.rb +238 -0
- data/spec/scss_lint/linter/space_after_property_name_spec.rb +23 -0
- data/spec/scss_lint/linter/space_before_brace_spec.rb +447 -0
- data/spec/scss_lint/linter/space_between_parens_spec.rb +263 -0
- data/spec/scss_lint/linter/string_quotes_spec.rb +303 -0
- data/spec/scss_lint/linter/trailing_semicolon_spec.rb +188 -0
- data/spec/scss_lint/linter/unnecessary_mantissa_spec.rb +67 -0
- data/spec/scss_lint/linter/unnecessary_parent_reference_spec.rb +67 -0
- data/spec/scss_lint/linter/url_format_spec.rb +55 -0
- data/spec/scss_lint/linter/url_quotes_spec.rb +63 -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/location_spec.rb +42 -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/xml_reporter_spec.rb +103 -0
- data/spec/scss_lint/reporter_spec.rb +11 -0
- data/spec/scss_lint/runner_spec.rb +132 -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 +126 -8
- data/lib/scss_lint/linter/trailing_semicolon_after_property_value.rb +0 -40
@@ -0,0 +1,176 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::DuplicateProperty do
|
4
|
+
context 'when rule set is empty' do
|
5
|
+
let(:css) { <<-CSS }
|
6
|
+
p {
|
7
|
+
}
|
8
|
+
CSS
|
9
|
+
|
10
|
+
it { should_not report_lint }
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when rule set contains no duplicates' do
|
14
|
+
let(:css) { <<-CSS }
|
15
|
+
p {
|
16
|
+
margin: 0;
|
17
|
+
padding: 0;
|
18
|
+
}
|
19
|
+
CSS
|
20
|
+
|
21
|
+
it { should_not report_lint }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when rule set contains duplicates' do
|
25
|
+
let(:css) { <<-CSS }
|
26
|
+
p {
|
27
|
+
margin: 0;
|
28
|
+
padding: 0;
|
29
|
+
margin: 1em;
|
30
|
+
}
|
31
|
+
CSS
|
32
|
+
|
33
|
+
it { should report_lint line: 4 }
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when rule set contains duplicates but only on vendor-prefixed property values' do
|
37
|
+
let(:css) { <<-CSS }
|
38
|
+
p {
|
39
|
+
background: -moz-linear-gradient(center top , #fff, #000);
|
40
|
+
background: -ms-linear-gradient(center top , #fff, #000);
|
41
|
+
background: -o-linear-gradient(center top , #fff, #000);
|
42
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#000));
|
43
|
+
background: linear-gradient(center top , #fff, #000);
|
44
|
+
margin: 1em;
|
45
|
+
}
|
46
|
+
CSS
|
47
|
+
|
48
|
+
it { should_not report_lint }
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'when placeholder contains duplicates but only on vendor-prefixed values' do
|
52
|
+
let(:css) { <<-CSS }
|
53
|
+
%cursor-grabbing {
|
54
|
+
cursor: -moz-grabbing;
|
55
|
+
cursor: -webkit-grabbing;
|
56
|
+
cursor: grabbing;
|
57
|
+
}
|
58
|
+
CSS
|
59
|
+
|
60
|
+
it { should_not report_lint }
|
61
|
+
end
|
62
|
+
|
63
|
+
context 'when placeholder contains exact duplicates besides for vendor-prefixed values' do
|
64
|
+
let(:css) { <<-CSS }
|
65
|
+
%cursor-grabbing {
|
66
|
+
cursor: grabbing;
|
67
|
+
cursor: grabbing;
|
68
|
+
}
|
69
|
+
CSS
|
70
|
+
|
71
|
+
it { should report_lint line: 3 }
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when mixin contains duplicates but only on vendor-prefixed values' do
|
75
|
+
let(:css) { <<-CSS }
|
76
|
+
@mixin cursor-grabbing($num) {
|
77
|
+
cursor: -moz-grabbing;
|
78
|
+
cursor: -webkit-grabbing;
|
79
|
+
cursor: grabbing;
|
80
|
+
}
|
81
|
+
CSS
|
82
|
+
|
83
|
+
it { should_not report_lint }
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'when mixin contains duplicates besides for vendor-prefixed values' do
|
87
|
+
let(:css) { <<-CSS }
|
88
|
+
@mixin cursor-grabbing($num) {
|
89
|
+
cursor: grabbing;
|
90
|
+
cursor: grabbing;
|
91
|
+
}
|
92
|
+
CSS
|
93
|
+
|
94
|
+
it { should report_lint line: 3 }
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'when rule set contains exact duplicates besides for vendor-prefixed property values' do
|
98
|
+
let(:css) { <<-CSS }
|
99
|
+
p {
|
100
|
+
background: -moz-linear-gradient(center top , #fff, #000);
|
101
|
+
background: -ms-linear-gradient(center top , #fff, #000);
|
102
|
+
background: -o-linear-gradient(center top , #fff, #000);
|
103
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#000));
|
104
|
+
background: linear-gradient(center top , #fff, #000);
|
105
|
+
background: linear-gradient(center top , #fff, #000);
|
106
|
+
margin: 1em;
|
107
|
+
}
|
108
|
+
CSS
|
109
|
+
|
110
|
+
it { should report_lint line: 7 }
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when rule set contains non-exact duplicates besides for vendor-prefixed values' do
|
114
|
+
let(:css) { <<-CSS }
|
115
|
+
p {
|
116
|
+
background: -moz-linear-gradient(center top , #fff, #000);
|
117
|
+
background: -ms-linear-gradient(center top , #fff, #000);
|
118
|
+
background: -o-linear-gradient(center top , #fff, #000);
|
119
|
+
background: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#000));
|
120
|
+
background: linear-gradient(center top , #fff, #000);
|
121
|
+
background: linear-gradient-b(center top , #fff, #000);
|
122
|
+
margin: 1em;
|
123
|
+
}
|
124
|
+
CSS
|
125
|
+
|
126
|
+
it { should report_lint line: 7 }
|
127
|
+
end
|
128
|
+
|
129
|
+
context 'when rule set contains multiple duplicates' do
|
130
|
+
let(:css) { <<-CSS }
|
131
|
+
p {
|
132
|
+
margin: 0;
|
133
|
+
padding: 0;
|
134
|
+
margin: 1em;
|
135
|
+
margin: 2em;
|
136
|
+
}
|
137
|
+
CSS
|
138
|
+
|
139
|
+
it { should report_lint line: 4 }
|
140
|
+
it { should report_lint line: 5 }
|
141
|
+
end
|
142
|
+
|
143
|
+
context 'when rule set contains duplicate properties with interpolation' do
|
144
|
+
let(:css) { <<-CSS }
|
145
|
+
p {
|
146
|
+
$direction: 'right';
|
147
|
+
margin-\#{direction}: 0;
|
148
|
+
$direction: 'left';
|
149
|
+
margin-\#{direction}: 0;
|
150
|
+
}
|
151
|
+
CSS
|
152
|
+
|
153
|
+
it { should_not report_lint }
|
154
|
+
end
|
155
|
+
|
156
|
+
context 'when property contains a variable' do
|
157
|
+
let(:css) { <<-CSS }
|
158
|
+
p {
|
159
|
+
color: $some-color;
|
160
|
+
}
|
161
|
+
CSS
|
162
|
+
|
163
|
+
it { should_not report_lint }
|
164
|
+
end
|
165
|
+
|
166
|
+
context 'when property contains a duplicate variable' do
|
167
|
+
let(:css) { <<-CSS }
|
168
|
+
p {
|
169
|
+
color: $some-color;
|
170
|
+
color: $some-color;
|
171
|
+
}
|
172
|
+
CSS
|
173
|
+
|
174
|
+
it { should report_lint line: 3 }
|
175
|
+
end
|
176
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::ElsePlacement do
|
4
|
+
context 'when @if contains no accompanying @else' do
|
5
|
+
let(:css) { <<-CSS }
|
6
|
+
@if $condition {
|
7
|
+
$var: 1;
|
8
|
+
}
|
9
|
+
CSS
|
10
|
+
|
11
|
+
it { should_not report_lint }
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when @else is on different line' do
|
15
|
+
let(:css) { <<-CSS }
|
16
|
+
@if $condition {
|
17
|
+
$var: 1;
|
18
|
+
}
|
19
|
+
@else {
|
20
|
+
$var: 0;
|
21
|
+
}
|
22
|
+
CSS
|
23
|
+
|
24
|
+
it { should report_lint line: 4 }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when @else is on the same line as previous curly' do
|
28
|
+
let(:css) { <<-CSS }
|
29
|
+
@if $condition {
|
30
|
+
$var: 1;
|
31
|
+
} @else {
|
32
|
+
$var: 0;
|
33
|
+
}
|
34
|
+
CSS
|
35
|
+
|
36
|
+
it { should_not report_lint }
|
37
|
+
end
|
38
|
+
|
39
|
+
context 'when `@else if` is on different line' do
|
40
|
+
let(:css) { <<-CSS }
|
41
|
+
@if $condition {
|
42
|
+
$var: 1;
|
43
|
+
}
|
44
|
+
@else if $other_condition {
|
45
|
+
$var: 2;
|
46
|
+
}
|
47
|
+
@else {
|
48
|
+
$var: 0;
|
49
|
+
}
|
50
|
+
CSS
|
51
|
+
|
52
|
+
it { should report_lint line: 4 }
|
53
|
+
it { should report_lint line: 7 }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when `@else if` is on the same line as previous curly' do
|
57
|
+
let(:css) { <<-CSS }
|
58
|
+
@if $condition {
|
59
|
+
$var: 1;
|
60
|
+
} @else if $other_condition {
|
61
|
+
$var: 2;
|
62
|
+
} @else {
|
63
|
+
$var: 0;
|
64
|
+
}
|
65
|
+
CSS
|
66
|
+
|
67
|
+
it { should_not report_lint }
|
68
|
+
end
|
69
|
+
|
70
|
+
context 'when @else is on same line as @if' do
|
71
|
+
let(:css) { <<-CSS }
|
72
|
+
@if $condition { $var: 1; } @else { $var: 0; }
|
73
|
+
CSS
|
74
|
+
|
75
|
+
it { should_not report_lint }
|
76
|
+
end
|
77
|
+
|
78
|
+
context 'when placement of @else on a new line is preferred' do
|
79
|
+
let(:linter_config) { { 'style' => 'new_line' } }
|
80
|
+
|
81
|
+
context 'when @else is on a new line' do
|
82
|
+
let(:css) { <<-CSS }
|
83
|
+
@if $condition {
|
84
|
+
$var: 1;
|
85
|
+
}
|
86
|
+
@else {
|
87
|
+
$var: 0;
|
88
|
+
}
|
89
|
+
CSS
|
90
|
+
|
91
|
+
it { should_not report_lint }
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'when @else is on the same line as previous curly brace' do
|
95
|
+
let(:css) { <<-CSS }
|
96
|
+
@if $condition {
|
97
|
+
$var: 1;
|
98
|
+
} @else {
|
99
|
+
$var: 0;
|
100
|
+
}
|
101
|
+
CSS
|
102
|
+
|
103
|
+
it { should report_lint line: 3 }
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,263 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::EmptyLineBetweenBlocks do
|
4
|
+
context 'when there are multiple rule sets' do
|
5
|
+
context 'with blank lines between them' do
|
6
|
+
let(:css) { <<-CSS }
|
7
|
+
a {
|
8
|
+
}
|
9
|
+
|
10
|
+
b {
|
11
|
+
}
|
12
|
+
|
13
|
+
p {
|
14
|
+
}
|
15
|
+
CSS
|
16
|
+
|
17
|
+
it { should_not report_lint }
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'with no blank line between them' do
|
21
|
+
let(:css) { <<-CSS }
|
22
|
+
a {
|
23
|
+
}
|
24
|
+
b {
|
25
|
+
}
|
26
|
+
p {
|
27
|
+
}
|
28
|
+
CSS
|
29
|
+
|
30
|
+
it { should report_lint line: 2 }
|
31
|
+
it { should report_lint line: 4 }
|
32
|
+
it { should_not report_lint line: 6 }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'when a rule set contains nested rule sets' do
|
37
|
+
context 'and the nested rule sets have no blank line between them' do
|
38
|
+
let(:css) { <<-CSS }
|
39
|
+
p {
|
40
|
+
a {
|
41
|
+
}
|
42
|
+
b {
|
43
|
+
}
|
44
|
+
}
|
45
|
+
CSS
|
46
|
+
|
47
|
+
it { should report_lint line: 3 }
|
48
|
+
it { should_not report_lint line: 5 }
|
49
|
+
end
|
50
|
+
|
51
|
+
context 'and the nested rule sets have a blank line between them' do
|
52
|
+
let(:css) { <<-CSS }
|
53
|
+
p {
|
54
|
+
a {
|
55
|
+
}
|
56
|
+
|
57
|
+
b {
|
58
|
+
}
|
59
|
+
}
|
60
|
+
CSS
|
61
|
+
|
62
|
+
it { should_not report_lint }
|
63
|
+
end
|
64
|
+
|
65
|
+
context 'and the nested rule set has a property preceding it' do
|
66
|
+
let(:css) { <<-CSS }
|
67
|
+
p {
|
68
|
+
margin: 0;
|
69
|
+
a {
|
70
|
+
}
|
71
|
+
}
|
72
|
+
CSS
|
73
|
+
|
74
|
+
it { should report_lint line: 3 }
|
75
|
+
end
|
76
|
+
|
77
|
+
context 'and the nested rule set has a property and empty line preceding it' do
|
78
|
+
let(:css) { <<-CSS }
|
79
|
+
p {
|
80
|
+
margin: 0;
|
81
|
+
|
82
|
+
a {
|
83
|
+
}
|
84
|
+
}
|
85
|
+
CSS
|
86
|
+
|
87
|
+
it { should_not report_lint }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when mixins are defined' do
|
92
|
+
context 'and there is no blank line between them' do
|
93
|
+
let(:css) { <<-CSS }
|
94
|
+
@mixin mixin1() {
|
95
|
+
}
|
96
|
+
@mixin mixin2() {
|
97
|
+
}
|
98
|
+
CSS
|
99
|
+
|
100
|
+
it { should report_lint line: 2 }
|
101
|
+
end
|
102
|
+
|
103
|
+
context 'and there is a blank line between them' do
|
104
|
+
let(:css) { <<-CSS }
|
105
|
+
@mixin mixin1() {
|
106
|
+
}
|
107
|
+
|
108
|
+
@mixin mixin2() {
|
109
|
+
}
|
110
|
+
CSS
|
111
|
+
|
112
|
+
it { should_not report_lint }
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
context 'when mixins are included without content' do
|
117
|
+
let(:css) { <<-CSS }
|
118
|
+
p {
|
119
|
+
@include mixin1();
|
120
|
+
property: blah;
|
121
|
+
@include mixin2(4);
|
122
|
+
}
|
123
|
+
CSS
|
124
|
+
|
125
|
+
it { should_not report_lint }
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'when mixins are included with content' do
|
129
|
+
context 'and there is no blank line between them' do
|
130
|
+
let(:css) { <<-CSS }
|
131
|
+
@include mixin1() {
|
132
|
+
property: value;
|
133
|
+
}
|
134
|
+
@include mixin2() {
|
135
|
+
property: value;
|
136
|
+
}
|
137
|
+
CSS
|
138
|
+
|
139
|
+
it { should report_lint line: 3 }
|
140
|
+
end
|
141
|
+
|
142
|
+
context 'and there is a blank line between them' do
|
143
|
+
let(:css) { <<-CSS }
|
144
|
+
@include mixin1() {
|
145
|
+
property: value;
|
146
|
+
}
|
147
|
+
|
148
|
+
@include mixin2() {
|
149
|
+
property: value;
|
150
|
+
}
|
151
|
+
CSS
|
152
|
+
|
153
|
+
it { should_not report_lint }
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
context 'when functions are defined' do
|
158
|
+
context 'and there is no blank line between them' do
|
159
|
+
let(:css) { <<-CSS }
|
160
|
+
@function func1() {
|
161
|
+
}
|
162
|
+
@function func2() {
|
163
|
+
}
|
164
|
+
CSS
|
165
|
+
|
166
|
+
it { should report_lint line: 2 }
|
167
|
+
end
|
168
|
+
|
169
|
+
context 'and there is a blank line between them' do
|
170
|
+
let(:css) { <<-CSS }
|
171
|
+
@function func1() {
|
172
|
+
}
|
173
|
+
|
174
|
+
@function func2() {
|
175
|
+
}
|
176
|
+
CSS
|
177
|
+
|
178
|
+
it { should_not report_lint }
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
context 'when a rule set is followed by a comment' do
|
183
|
+
let(:css) { <<-CSS }
|
184
|
+
a {
|
185
|
+
}
|
186
|
+
// This is a comment
|
187
|
+
p {
|
188
|
+
}
|
189
|
+
CSS
|
190
|
+
|
191
|
+
it { should report_lint line: 2 }
|
192
|
+
end
|
193
|
+
|
194
|
+
context 'when a rule set is preceded by a comment' do
|
195
|
+
let(:css) { <<-CSS }
|
196
|
+
a {
|
197
|
+
}
|
198
|
+
|
199
|
+
// This is a comment
|
200
|
+
p {
|
201
|
+
}
|
202
|
+
CSS
|
203
|
+
|
204
|
+
it { should_not report_lint }
|
205
|
+
end
|
206
|
+
|
207
|
+
context 'when there are multiple placeholder rule sets' do
|
208
|
+
context 'with blank lines between them' do
|
209
|
+
let(:css) { <<-CSS }
|
210
|
+
%a {
|
211
|
+
}
|
212
|
+
|
213
|
+
%b {
|
214
|
+
}
|
215
|
+
|
216
|
+
%c {
|
217
|
+
}
|
218
|
+
CSS
|
219
|
+
|
220
|
+
it { should_not report_lint }
|
221
|
+
end
|
222
|
+
|
223
|
+
context 'with no blank line between them' do
|
224
|
+
let(:css) { <<-CSS }
|
225
|
+
%a {
|
226
|
+
}
|
227
|
+
%b {
|
228
|
+
}
|
229
|
+
%c {
|
230
|
+
}
|
231
|
+
CSS
|
232
|
+
|
233
|
+
it { should report_lint line: 2 }
|
234
|
+
it { should report_lint line: 4 }
|
235
|
+
it { should_not report_lint line: 6 }
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
239
|
+
context 'when blocks occupy a single line' do
|
240
|
+
let(:linter_config) { { 'ignore_single_line_blocks' => ignore_single_line_blocks } }
|
241
|
+
|
242
|
+
let(:css) { <<-CSS }
|
243
|
+
.icon-up { &:before { content: '^'; } }
|
244
|
+
.icon-right { &:before { content: '>'; } }
|
245
|
+
@include some-mixin { content: '<'; }
|
246
|
+
@include some-other-mixin { content: 'v'; }
|
247
|
+
CSS
|
248
|
+
|
249
|
+
context 'and the `ignore_single_line_blocks` option is true' do
|
250
|
+
let(:ignore_single_line_blocks) { true }
|
251
|
+
|
252
|
+
it { should_not report_lint }
|
253
|
+
end
|
254
|
+
|
255
|
+
context 'and the `ignore_single_line_blocks` option is false' do
|
256
|
+
let(:ignore_single_line_blocks) { false }
|
257
|
+
|
258
|
+
it { should report_lint line: 1 }
|
259
|
+
it { should report_lint line: 2 }
|
260
|
+
it { should report_lint line: 3 }
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|