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,63 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::PlaceholderInExtend do
|
4
|
+
context 'when extending with a class' do
|
5
|
+
let(:css) { <<-CSS }
|
6
|
+
p {
|
7
|
+
@extend .error;
|
8
|
+
}
|
9
|
+
CSS
|
10
|
+
|
11
|
+
it { should report_lint line: 2 }
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'when extending with a type' do
|
15
|
+
let(:css) { <<-CSS }
|
16
|
+
p {
|
17
|
+
@extend span;
|
18
|
+
}
|
19
|
+
CSS
|
20
|
+
|
21
|
+
it { should report_lint line: 2 }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when extending with an id' do
|
25
|
+
let(:css) { <<-CSS }
|
26
|
+
p {
|
27
|
+
@extend #some-identifer;
|
28
|
+
}
|
29
|
+
CSS
|
30
|
+
|
31
|
+
it { should report_lint line: 2 }
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when extending with a placeholder' do
|
35
|
+
let(:css) { <<-CSS }
|
36
|
+
p {
|
37
|
+
@extend %placeholder;
|
38
|
+
}
|
39
|
+
CSS
|
40
|
+
|
41
|
+
it { should_not report_lint }
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when extending with a selector whose prefix is not a placeholder' do
|
45
|
+
let(:css) { <<-CSS }
|
46
|
+
p {
|
47
|
+
@extend .blah-\#{$dynamically_generated_name};
|
48
|
+
}
|
49
|
+
CSS
|
50
|
+
|
51
|
+
it { should report_lint line: 2 }
|
52
|
+
end
|
53
|
+
|
54
|
+
context 'when extending with a selector whose prefix is dynamic' do
|
55
|
+
let(:css) { <<-CSS }
|
56
|
+
p {
|
57
|
+
@extend \#{$dynamically_generated_placeholder_name};
|
58
|
+
}
|
59
|
+
CSS
|
60
|
+
|
61
|
+
it { should_not report_lint }
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,246 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::PropertySortOrder do
|
4
|
+
context 'when rule 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 contains properties in sorted order' do
|
14
|
+
let(:css) { <<-CSS }
|
15
|
+
p {
|
16
|
+
background: #000;
|
17
|
+
display: none;
|
18
|
+
margin: 5px;
|
19
|
+
padding: 10px;
|
20
|
+
}
|
21
|
+
CSS
|
22
|
+
|
23
|
+
it { should_not report_lint }
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when rule contains mixins followed by properties in sorted order' do
|
27
|
+
let(:css) { <<-CSS }
|
28
|
+
p {
|
29
|
+
@include border-radius(5px);
|
30
|
+
background: #000;
|
31
|
+
display: none;
|
32
|
+
margin: 5px;
|
33
|
+
padding: 10px;
|
34
|
+
}
|
35
|
+
CSS
|
36
|
+
|
37
|
+
it { should_not report_lint }
|
38
|
+
end
|
39
|
+
|
40
|
+
context 'when rule contains nested rules after sorted properties' do
|
41
|
+
let(:css) { <<-CSS }
|
42
|
+
p {
|
43
|
+
background: #000;
|
44
|
+
display: none;
|
45
|
+
margin: 5px;
|
46
|
+
padding: 10px;
|
47
|
+
a {
|
48
|
+
color: #555;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
CSS
|
52
|
+
|
53
|
+
it { should_not report_lint }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when rule contains properties in random order' do
|
57
|
+
let(:css) { <<-CSS }
|
58
|
+
p {
|
59
|
+
padding: 5px;
|
60
|
+
display: block;
|
61
|
+
margin: 10px;
|
62
|
+
}
|
63
|
+
CSS
|
64
|
+
|
65
|
+
it { should report_lint line: 2 }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when there are multiple rules with out of order properties' do
|
69
|
+
let(:css) { <<-CSS }
|
70
|
+
p {
|
71
|
+
display: block;
|
72
|
+
background: #fff;
|
73
|
+
}
|
74
|
+
a {
|
75
|
+
margin: 5px;
|
76
|
+
color: #444;
|
77
|
+
}
|
78
|
+
CSS
|
79
|
+
|
80
|
+
it { should report_lint line: 2 }
|
81
|
+
it { should report_lint line: 6 }
|
82
|
+
end
|
83
|
+
|
84
|
+
context 'when there are nested rules with out of order properties' do
|
85
|
+
let(:css) { <<-CSS }
|
86
|
+
p {
|
87
|
+
display: block;
|
88
|
+
background: #fff;
|
89
|
+
a {
|
90
|
+
margin: 5px;
|
91
|
+
color: #444;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
CSS
|
95
|
+
|
96
|
+
it { should report_lint line: 2 }
|
97
|
+
it { should report_lint line: 5 }
|
98
|
+
end
|
99
|
+
|
100
|
+
context 'when out-of-order property is the second last in the list of sorted properties' do
|
101
|
+
let(:css) { <<-CSS }
|
102
|
+
p {
|
103
|
+
border: 0;
|
104
|
+
border-radius: 3px;
|
105
|
+
float: left;
|
106
|
+
display: block;
|
107
|
+
}
|
108
|
+
CSS
|
109
|
+
|
110
|
+
it { should report_lint line: 4 }
|
111
|
+
end
|
112
|
+
|
113
|
+
context 'when vendor-prefixed properties are ordered after the non-prefixed property' do
|
114
|
+
let(:css) { <<-CSS }
|
115
|
+
p {
|
116
|
+
border-radius: 3px;
|
117
|
+
-moz-border-radius: 3px;
|
118
|
+
-o-border-radius: 3px;
|
119
|
+
-webkit-border-radius: 3px;
|
120
|
+
}
|
121
|
+
CSS
|
122
|
+
|
123
|
+
it { should report_lint line: 2 }
|
124
|
+
end
|
125
|
+
|
126
|
+
context 'when vendor-prefixed properties are ordered before the non-prefixed property' do
|
127
|
+
let(:css) { <<-CSS }
|
128
|
+
p {
|
129
|
+
-moz-border-radius: 3px;
|
130
|
+
-o-border-radius: 3px;
|
131
|
+
-webkit-border-radius: 3px;
|
132
|
+
border-radius: 3px;
|
133
|
+
}
|
134
|
+
CSS
|
135
|
+
|
136
|
+
it { should_not report_lint }
|
137
|
+
end
|
138
|
+
|
139
|
+
context 'when using -moz-osx vendor-prefixed property' do
|
140
|
+
let(:css) { <<-CSS }
|
141
|
+
p {
|
142
|
+
-moz-osx-font-smoothing: grayscale;
|
143
|
+
-webkit-font-smoothing: antialiased;
|
144
|
+
}
|
145
|
+
CSS
|
146
|
+
|
147
|
+
it { should_not report_lint }
|
148
|
+
end
|
149
|
+
|
150
|
+
context 'when vendor properties are ordered out-of-order before the non-prefixed property' do
|
151
|
+
let(:css) { <<-CSS }
|
152
|
+
p {
|
153
|
+
-moz-border-radius: 3px;
|
154
|
+
-webkit-border-radius: 3px;
|
155
|
+
-o-border-radius: 3px;
|
156
|
+
border-radius: 3px;
|
157
|
+
}
|
158
|
+
CSS
|
159
|
+
|
160
|
+
it { should report_lint line: 3 }
|
161
|
+
end
|
162
|
+
|
163
|
+
context 'when the order has been explicitly set' do
|
164
|
+
let(:linter_config) { { 'order' => %w[position display padding margin width] } }
|
165
|
+
|
166
|
+
context 'and the properties match the specified order' do
|
167
|
+
let(:css) { <<-CSS }
|
168
|
+
p {
|
169
|
+
display: block;
|
170
|
+
padding: 5px;
|
171
|
+
margin: 10px;
|
172
|
+
}
|
173
|
+
CSS
|
174
|
+
|
175
|
+
it { should_not report_lint }
|
176
|
+
end
|
177
|
+
|
178
|
+
context 'and the properties do not match the specified order' do
|
179
|
+
let(:css) { <<-CSS }
|
180
|
+
p {
|
181
|
+
padding: 5px;
|
182
|
+
display: block;
|
183
|
+
margin: 10px;
|
184
|
+
}
|
185
|
+
CSS
|
186
|
+
|
187
|
+
it { should report_lint line: 2 }
|
188
|
+
end
|
189
|
+
|
190
|
+
context 'and there are properties that are not specified in the explicit ordering' do
|
191
|
+
let(:css) { <<-CSS }
|
192
|
+
p {
|
193
|
+
display: block;
|
194
|
+
padding: 5px;
|
195
|
+
font-weight: bold; // Unspecified
|
196
|
+
margin: 10px;
|
197
|
+
border: 0; // Unspecified
|
198
|
+
background: red; // Unspecified
|
199
|
+
width: 100%;
|
200
|
+
}
|
201
|
+
CSS
|
202
|
+
|
203
|
+
context 'and the ignored_omitted option is enabled' do
|
204
|
+
let(:linter_config) { super().merge('ignored_unspecified' => true) }
|
205
|
+
|
206
|
+
it { should_not report_lint }
|
207
|
+
end
|
208
|
+
|
209
|
+
context 'and the ignored_omitted option is disabled' do
|
210
|
+
let(:linter_config) { super().merge('ignored_unspecified' => false) }
|
211
|
+
|
212
|
+
it { should report_lint }
|
213
|
+
end
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
context 'when sort order is set to a preset order' do
|
218
|
+
let(:linter_config) { { 'order' => 'concentric' } }
|
219
|
+
|
220
|
+
context 'and the properties match the order' do
|
221
|
+
let(:css) { <<-CSS }
|
222
|
+
p {
|
223
|
+
display: block;
|
224
|
+
position: absolute;
|
225
|
+
float: left;
|
226
|
+
clear: both;
|
227
|
+
}
|
228
|
+
CSS
|
229
|
+
|
230
|
+
it { should_not report_lint }
|
231
|
+
end
|
232
|
+
|
233
|
+
context 'and the properties do not match the order' do
|
234
|
+
let(:css) { <<-CSS }
|
235
|
+
p {
|
236
|
+
clear: both;
|
237
|
+
display: block;
|
238
|
+
float: left;
|
239
|
+
position: absolute;
|
240
|
+
}
|
241
|
+
CSS
|
242
|
+
|
243
|
+
it { should report_lint }
|
244
|
+
end
|
245
|
+
end
|
246
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::PropertySpelling do
|
4
|
+
context 'with a regular property' do
|
5
|
+
let(:css) { <<-CSS }
|
6
|
+
p {
|
7
|
+
margin: 5px;
|
8
|
+
}
|
9
|
+
CSS
|
10
|
+
|
11
|
+
it { should_not report_lint }
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'with a property containing interpolation' do
|
15
|
+
let(:css) { <<-CSS }
|
16
|
+
p {
|
17
|
+
\#{$property-name}: 5px;
|
18
|
+
}
|
19
|
+
CSS
|
20
|
+
|
21
|
+
it { should_not report_lint }
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'with a non-existent property' do
|
25
|
+
let(:css) { <<-CSS }
|
26
|
+
p {
|
27
|
+
peanut-butter: jelly-time;
|
28
|
+
}
|
29
|
+
CSS
|
30
|
+
|
31
|
+
it { should report_lint }
|
32
|
+
end
|
33
|
+
|
34
|
+
context 'when extra properties are specified' do
|
35
|
+
let(:linter_config) { { 'extra_properties' => ['made-up-property'] } }
|
36
|
+
|
37
|
+
context 'with a non-existent property' do
|
38
|
+
let(:css) { <<-CSS }
|
39
|
+
p {
|
40
|
+
peanut-butter: jelly-time;
|
41
|
+
}
|
42
|
+
CSS
|
43
|
+
|
44
|
+
it { should report_lint }
|
45
|
+
end
|
46
|
+
|
47
|
+
context 'with a property listed as an extra property' do
|
48
|
+
let(:css) { <<-CSS }
|
49
|
+
p {
|
50
|
+
made-up-property: value;
|
51
|
+
}
|
52
|
+
CSS
|
53
|
+
|
54
|
+
it { should_not report_lint }
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,159 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SCSSLint::Linter::SelectorDepth do
|
4
|
+
context 'when sequence has a depth of one' do
|
5
|
+
let(:css) { 'p {}' }
|
6
|
+
|
7
|
+
it { should_not report_lint }
|
8
|
+
end
|
9
|
+
|
10
|
+
context 'when sequence has a depth of three' do
|
11
|
+
let(:css) { 'body article p {}' }
|
12
|
+
|
13
|
+
it { should_not report_lint }
|
14
|
+
|
15
|
+
context 'and contains a nested selector' do
|
16
|
+
let(:css) { <<-CSS }
|
17
|
+
body article p {
|
18
|
+
i {
|
19
|
+
font-style: italic;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
CSS
|
23
|
+
|
24
|
+
it { should report_lint line: 2 }
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'and contains multiple nested selectors' do
|
28
|
+
let(:css) { <<-CSS }
|
29
|
+
body article p {
|
30
|
+
b {
|
31
|
+
font-weight: bold;
|
32
|
+
}
|
33
|
+
i {
|
34
|
+
font-style: italic;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
CSS
|
38
|
+
|
39
|
+
it { should report_lint line: 2 }
|
40
|
+
it { should report_lint line: 5 }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context 'when sequence has a depth of four' do
|
45
|
+
let(:css) { 'body article p i {}' }
|
46
|
+
|
47
|
+
it { should report_lint line: 1 }
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'when sequence is made up of adjacent sibling combinators' do
|
51
|
+
let(:css) { '.one + .two + .three + .four {}' }
|
52
|
+
|
53
|
+
it { should_not report_lint }
|
54
|
+
end
|
55
|
+
|
56
|
+
context 'when sequence is made up of general sibling combinators' do
|
57
|
+
let(:css) { '.one .two ~ .three ~ .four {}' }
|
58
|
+
|
59
|
+
it { should_not report_lint }
|
60
|
+
end
|
61
|
+
|
62
|
+
context 'when sequence contains interpolation' do
|
63
|
+
let(:css) { '.one #{$interpolated-string} .two .three {}' }
|
64
|
+
|
65
|
+
it { should_not report_lint }
|
66
|
+
end
|
67
|
+
|
68
|
+
context 'when comma sequence contains no sequences exceeding depth limit' do
|
69
|
+
let(:css) { <<-CSS }
|
70
|
+
p,
|
71
|
+
.one .two .three,
|
72
|
+
ul > li {
|
73
|
+
}
|
74
|
+
CSS
|
75
|
+
|
76
|
+
it { should_not report_lint }
|
77
|
+
|
78
|
+
context 'and a nested selector causes one of the sequences to exceed the limit' do
|
79
|
+
let(:css) { <<-CSS }
|
80
|
+
p,
|
81
|
+
.one .two .three,
|
82
|
+
ul > li {
|
83
|
+
.four {}
|
84
|
+
}
|
85
|
+
CSS
|
86
|
+
|
87
|
+
it { should report_lint line: 4 }
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when comma sequence contains a sequence exceeding the depth limit' do
|
92
|
+
let(:css) { <<-CSS }
|
93
|
+
p,
|
94
|
+
.one .two .three .four,
|
95
|
+
ul > li {
|
96
|
+
}
|
97
|
+
CSS
|
98
|
+
|
99
|
+
it { should report_lint line: 1 }
|
100
|
+
end
|
101
|
+
|
102
|
+
context 'when sequence contains a nested selector with a parent selector' do
|
103
|
+
context 'which does not exceed the depth limit' do
|
104
|
+
let(:css) { <<-CSS }
|
105
|
+
.one .two {
|
106
|
+
.three & {}
|
107
|
+
}
|
108
|
+
CSS
|
109
|
+
|
110
|
+
it { should_not report_lint }
|
111
|
+
|
112
|
+
context 'and the parent selector is chained' do
|
113
|
+
let(:css) { <<-CSS }
|
114
|
+
.one .two .three {
|
115
|
+
&.chained {}
|
116
|
+
}
|
117
|
+
CSS
|
118
|
+
|
119
|
+
it { should_not report_lint }
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
context 'which does exceed the depth limit' do
|
124
|
+
let(:css) { <<-CSS }
|
125
|
+
.one .two {
|
126
|
+
.three & & .four {}
|
127
|
+
}
|
128
|
+
CSS
|
129
|
+
|
130
|
+
it { should report_lint line: 2 }
|
131
|
+
|
132
|
+
context 'and the parent selector is chained' do
|
133
|
+
let(:css) { <<-CSS }
|
134
|
+
.one .two .three > .four {
|
135
|
+
&.chained {}
|
136
|
+
}
|
137
|
+
CSS
|
138
|
+
|
139
|
+
it { should report_lint line: 2 }
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
context 'when sequence contains a @keyframe' do
|
145
|
+
let(:css) { <<-CSS }
|
146
|
+
@keyframe my-keyframe {
|
147
|
+
0% {
|
148
|
+
background: #000;
|
149
|
+
}
|
150
|
+
|
151
|
+
50% {
|
152
|
+
background: #fff;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
CSS
|
156
|
+
|
157
|
+
it { should_not report_lint }
|
158
|
+
end
|
159
|
+
end
|