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.
Files changed (77) hide show
  1. checksums.yaml +4 -4
  2. data/config/default.yml +10 -1
  3. data/data/property-sort-orders/concentric.txt +99 -0
  4. data/lib/scss_lint.rb +1 -0
  5. data/lib/scss_lint/cli.rb +9 -3
  6. data/lib/scss_lint/exceptions.rb +4 -0
  7. data/lib/scss_lint/linter.rb +10 -1
  8. data/lib/scss_lint/linter/capitalization_in_selector.rb +14 -6
  9. data/lib/scss_lint/linter/compass/property_with_mixin.rb +9 -2
  10. data/lib/scss_lint/linter/indentation.rb +28 -6
  11. data/lib/scss_lint/linter/property_sort_order.rb +61 -9
  12. data/lib/scss_lint/linter/single_line_per_property.rb +53 -0
  13. data/lib/scss_lint/linter/single_line_per_selector.rb +6 -1
  14. data/lib/scss_lint/linter/space_after_comma.rb +27 -19
  15. data/lib/scss_lint/linter/space_before_brace.rb +5 -4
  16. data/lib/scss_lint/linter/trailing_semicolon.rb +53 -0
  17. data/lib/scss_lint/linter/unnecessary_parent_reference.rb +36 -0
  18. data/lib/scss_lint/reporter/default_reporter.rb +7 -2
  19. data/lib/scss_lint/reporter/xml_reporter.rb +2 -1
  20. data/lib/scss_lint/runner.rb +7 -3
  21. data/lib/scss_lint/version.rb +1 -1
  22. data/spec/scss_lint/cli_spec.rb +314 -0
  23. data/spec/scss_lint/config_spec.rb +439 -0
  24. data/spec/scss_lint/engine_spec.rb +24 -0
  25. data/spec/scss_lint/linter/border_zero_spec.rb +84 -0
  26. data/spec/scss_lint/linter/capitalization_in_selector_spec.rb +71 -0
  27. data/spec/scss_lint/linter/color_keyword_spec.rb +83 -0
  28. data/spec/scss_lint/linter/comment_spec.rb +55 -0
  29. data/spec/scss_lint/linter/compass/property_with_mixin_spec.rb +55 -0
  30. data/spec/scss_lint/linter/debug_statement_spec.rb +21 -0
  31. data/spec/scss_lint/linter/declaration_order_spec.rb +94 -0
  32. data/spec/scss_lint/linter/duplicate_property_spec.rb +176 -0
  33. data/spec/scss_lint/linter/else_placement_spec.rb +106 -0
  34. data/spec/scss_lint/linter/empty_line_between_blocks_spec.rb +263 -0
  35. data/spec/scss_lint/linter/empty_rule_spec.rb +27 -0
  36. data/spec/scss_lint/linter/final_newline_spec.rb +49 -0
  37. data/spec/scss_lint/linter/hex_length_spec.rb +104 -0
  38. data/spec/scss_lint/linter/hex_notation_spec.rb +104 -0
  39. data/spec/scss_lint/linter/hex_validation_spec.rb +36 -0
  40. data/spec/scss_lint/linter/id_with_extraneous_selector_spec.rb +139 -0
  41. data/spec/scss_lint/linter/indentation_spec.rb +242 -0
  42. data/spec/scss_lint/linter/leading_zero_spec.rb +233 -0
  43. data/spec/scss_lint/linter/mergeable_selector_spec.rb +283 -0
  44. data/spec/scss_lint/linter/name_format_spec.rb +206 -0
  45. data/spec/scss_lint/linter/placeholder_in_extend_spec.rb +63 -0
  46. data/spec/scss_lint/linter/property_sort_order_spec.rb +246 -0
  47. data/spec/scss_lint/linter/property_spelling_spec.rb +57 -0
  48. data/spec/scss_lint/linter/selector_depth_spec.rb +159 -0
  49. data/spec/scss_lint/linter/shorthand_spec.rb +172 -0
  50. data/spec/scss_lint/linter/single_line_per_property_spec.rb +73 -0
  51. data/spec/scss_lint/linter/single_line_per_selector_spec.rb +121 -0
  52. data/spec/scss_lint/linter/space_after_comma_spec.rb +315 -0
  53. data/spec/scss_lint/linter/space_after_property_colon_spec.rb +238 -0
  54. data/spec/scss_lint/linter/space_after_property_name_spec.rb +23 -0
  55. data/spec/scss_lint/linter/space_before_brace_spec.rb +447 -0
  56. data/spec/scss_lint/linter/space_between_parens_spec.rb +263 -0
  57. data/spec/scss_lint/linter/string_quotes_spec.rb +303 -0
  58. data/spec/scss_lint/linter/trailing_semicolon_spec.rb +188 -0
  59. data/spec/scss_lint/linter/unnecessary_mantissa_spec.rb +67 -0
  60. data/spec/scss_lint/linter/unnecessary_parent_reference_spec.rb +67 -0
  61. data/spec/scss_lint/linter/url_format_spec.rb +55 -0
  62. data/spec/scss_lint/linter/url_quotes_spec.rb +63 -0
  63. data/spec/scss_lint/linter/zero_unit_spec.rb +113 -0
  64. data/spec/scss_lint/linter_registry_spec.rb +50 -0
  65. data/spec/scss_lint/location_spec.rb +42 -0
  66. data/spec/scss_lint/reporter/config_reporter_spec.rb +42 -0
  67. data/spec/scss_lint/reporter/default_reporter_spec.rb +73 -0
  68. data/spec/scss_lint/reporter/files_reporter_spec.rb +38 -0
  69. data/spec/scss_lint/reporter/xml_reporter_spec.rb +103 -0
  70. data/spec/scss_lint/reporter_spec.rb +11 -0
  71. data/spec/scss_lint/runner_spec.rb +132 -0
  72. data/spec/scss_lint/selector_visitor_spec.rb +264 -0
  73. data/spec/spec_helper.rb +34 -0
  74. data/spec/support/isolated_environment.rb +25 -0
  75. data/spec/support/matchers/report_lint.rb +48 -0
  76. metadata +126 -8
  77. data/lib/scss_lint/linter/trailing_semicolon_after_property_value.rb +0 -40
@@ -0,0 +1,264 @@
1
+ require 'spec_helper'
2
+
3
+ describe SCSSLint::SelectorVisitor do
4
+ describe '#visit' do
5
+ let(:engine) { SCSSLint::Engine.new(css) }
6
+ before { RuleVisitor.new(visitor).run(engine) }
7
+
8
+ # Visits every rule in the given parse tree and passes the parsed selector
9
+ # to the given `selector_visitor`.
10
+ class RuleVisitor < Sass::Tree::Visitors::Base
11
+ def initialize(selector_visitor)
12
+ @selector_visitor = selector_visitor
13
+ end
14
+
15
+ def run(engine)
16
+ visit(engine.tree)
17
+ end
18
+
19
+ def visit_rule(node)
20
+ @selector_visitor.visit_selector(node.parsed_rules)
21
+ yield # Continue linting children
22
+ end
23
+ end
24
+
25
+ # Superclass for all the test selector visitors
26
+ class TrackingSelectorVisitor
27
+ include SCSSLint::SelectorVisitor
28
+
29
+ attr_reader :node_order
30
+
31
+ def initialize
32
+ @node_order = []
33
+ end
34
+ end
35
+
36
+ context 'when visitor defines visit_attribute' do
37
+ class TestAttributeVisitor < TrackingSelectorVisitor
38
+ def visit_attribute(attribute)
39
+ @node_order << attribute.name.join
40
+ end
41
+ end
42
+
43
+ let(:visitor) { TestAttributeVisitor.new }
44
+
45
+ let(:css) { <<-CSS }
46
+ [rel="nofollow"] {}
47
+ a[href="http"] {}
48
+ .class [data-count] {}
49
+ CSS
50
+
51
+ it 'visits all attribute nodes' do
52
+ visitor.node_order.should == %w[rel href data-count]
53
+ end
54
+ end
55
+
56
+ context 'when visitor defines visit_class' do
57
+ class TestClassVisitor < TrackingSelectorVisitor
58
+ def visit_class(klass)
59
+ @node_order << klass.name.join
60
+ end
61
+ end
62
+
63
+ let(:visitor) { TestClassVisitor.new }
64
+
65
+ let(:css) { <<-CSS }
66
+ a.link {}
67
+ .menu .menu-item {}
68
+ .button[data-source], .overlay {}
69
+ CSS
70
+
71
+ it 'visits all class nodes' do
72
+ visitor.node_order.should == %w[link menu menu-item button overlay]
73
+ end
74
+ end
75
+
76
+ context 'when visitor defines visit_element' do
77
+ class TestElementVisitor < TrackingSelectorVisitor
78
+ def visit_element(element)
79
+ @node_order << element.name.join
80
+ end
81
+ end
82
+
83
+ let(:visitor) { TestElementVisitor.new }
84
+
85
+ let(:css) { <<-CSS }
86
+ a, b {}
87
+ .class {}
88
+ i + p {}
89
+ CSS
90
+
91
+ it 'visits all element nodes' do
92
+ visitor.node_order.should == %w[a b i p]
93
+ end
94
+ end
95
+
96
+ context 'when visitor defines visit_id' do
97
+ class TestIdVisitor < TrackingSelectorVisitor
98
+ def visit_id(id)
99
+ @node_order << id.name.join
100
+ end
101
+ end
102
+
103
+ let(:visitor) { TestIdVisitor.new }
104
+
105
+ let(:css) { <<-CSS }
106
+ #something, #thing {}
107
+ #object + #entity {}
108
+ CSS
109
+
110
+ it 'visits all id nodes' do
111
+ visitor.node_order.should == %w[something thing object entity]
112
+ end
113
+ end
114
+
115
+ context 'when visitor defines visit_parent' do
116
+ class TestParentVisitor < TrackingSelectorVisitor
117
+ def visit_parent(parent)
118
+ @node_order << parent.line
119
+ end
120
+ end
121
+
122
+ let(:visitor) { TestParentVisitor.new }
123
+
124
+ let(:css) { <<-CSS }
125
+ p {
126
+ &.class {}
127
+ .container & {}
128
+ .nothing {}
129
+ }
130
+ CSS
131
+
132
+ it 'visits all parent nodes' do
133
+ visitor.node_order.should == [2, 3]
134
+ end
135
+ end
136
+
137
+ context 'when visitor defines visit_placeholder' do
138
+ class TestPlaceholderVisitor < TrackingSelectorVisitor
139
+ def visit_placeholder(placeholder)
140
+ @node_order << placeholder.name.join
141
+ end
142
+ end
143
+
144
+ let(:visitor) { TestPlaceholderVisitor.new }
145
+
146
+ let(:css) { <<-CSS }
147
+ %placeholder, %other-placeholder {}
148
+ .button, %button {}
149
+ CSS
150
+
151
+ it 'visits all placeholder nodes' do
152
+ visitor.node_order.should == %w[placeholder other-placeholder button]
153
+ end
154
+ end
155
+
156
+ context 'when visitor defines visit_pseudo' do
157
+ class TestPseudoVisitor < TrackingSelectorVisitor
158
+ def visit_pseudo(pseudo)
159
+ @node_order << pseudo.name.join
160
+ end
161
+ end
162
+
163
+ let(:visitor) { TestPseudoVisitor.new }
164
+
165
+ let(:css) { <<-CSS }
166
+ li:first-child, li:last-child {}
167
+ p {
168
+ &:first-letter {}
169
+ }
170
+ CSS
171
+
172
+ it 'visits all pseudo-selector nodes' do
173
+ visitor.node_order.should == %w[first-child last-child first-letter]
174
+ end
175
+ end
176
+
177
+ context 'when visitor defines visit_universal' do
178
+ class TestUniversalVisitor < TrackingSelectorVisitor
179
+ def visit_universal(universal)
180
+ @node_order << universal.line
181
+ end
182
+ end
183
+
184
+ let(:visitor) { TestUniversalVisitor.new }
185
+
186
+ let(:css) { <<-CSS }
187
+ p > * {}
188
+ * {}
189
+ li {}
190
+ *:first-child {}
191
+ CSS
192
+
193
+ it 'visits all universal-selector nodes' do
194
+ visitor.node_order.should == [1, 2, 4]
195
+ end
196
+ end
197
+
198
+ context 'when visitor defines visit_simple_sequence' do
199
+ class TestSimpleSequenceVisitor < TrackingSelectorVisitor
200
+ def visit_simple_sequence(seq)
201
+ @node_order << seq
202
+ end
203
+ end
204
+
205
+ let(:visitor) { TestSimpleSequenceVisitor.new }
206
+
207
+ let(:css) { <<-CSS }
208
+ a, b, p[lang] {}
209
+ a.link + b.word {}
210
+ li {}
211
+ ul > li {}
212
+ p span {}
213
+ CSS
214
+
215
+ it 'visits all simple sequences' do
216
+ visitor.node_order.count.should == 10
217
+ end
218
+ end
219
+
220
+ context 'when visitor defines visit_sequence' do
221
+ class TestSequenceVisitor < TrackingSelectorVisitor
222
+ def visit_sequence(seq)
223
+ @node_order << seq
224
+ end
225
+ end
226
+
227
+ let(:visitor) { TestSequenceVisitor.new }
228
+
229
+ let(:css) { <<-CSS }
230
+ a, b, p[lang] {}
231
+ a.link + b.word {}
232
+ li {}
233
+ ul > li {}
234
+ p span {}
235
+ CSS
236
+
237
+ it 'visits all sequences' do
238
+ visitor.node_order.count.should == 7
239
+ end
240
+ end
241
+
242
+ context 'when visitor defines visit_comma_sequence' do
243
+ class TestCommaSequenceVisitor < TrackingSelectorVisitor
244
+ def visit_comma_sequence(seq)
245
+ @node_order << seq
246
+ end
247
+ end
248
+
249
+ let(:visitor) { TestCommaSequenceVisitor.new }
250
+
251
+ let(:css) { <<-CSS }
252
+ a, b, p[lang] {}
253
+ a.link + b.word {}
254
+ li {}
255
+ ul > li {}
256
+ p span {}
257
+ CSS
258
+
259
+ it 'visits all comma (i.e. selector) sequences' do
260
+ visitor.node_order.count.should == 5
261
+ end
262
+ end
263
+ end
264
+ end
@@ -0,0 +1,34 @@
1
+ require 'scss_lint'
2
+ require 'nokogiri'
3
+
4
+ Dir[File.dirname(__FILE__) + '/support/**/*.rb'].each { |f| require f }
5
+
6
+ RSpec.configure do |config|
7
+ config.expect_with :rspec do |c|
8
+ c.syntax = [:expect, :should]
9
+ end
10
+
11
+ config.mock_with :rspec do |c|
12
+ c.syntax = :should
13
+ end
14
+
15
+ config.before(:each) do
16
+ # If running a linter spec, run the described linter against the CSS code
17
+ # for each example. This significantly DRYs up our linter specs to contain
18
+ # only tests, since all the setup code is now centralized here.
19
+ if described_class < SCSSLint::Linter
20
+ initial_indent = css[/\A(\s*)/, 1]
21
+ normalized_css = css.gsub(/^#{initial_indent}/, '')
22
+
23
+ # Use the configuration settings defined by default unless a specific
24
+ # configuration has been provided for the test.
25
+ local_config = if respond_to?(:linter_config)
26
+ linter_config
27
+ else
28
+ SCSSLint::Config.default.linter_options(subject)
29
+ end
30
+
31
+ subject.run(SCSSLint::Engine.new(normalized_css), local_config)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,25 @@
1
+ require 'fileutils'
2
+ require 'tmpdir'
3
+
4
+ shared_context 'isolated environment' do
5
+ around do |example|
6
+ Dir.mktmpdir do |tmpdir|
7
+ original_home = ENV['HOME']
8
+
9
+ begin
10
+ virtual_home = File.expand_path(File.join(tmpdir, 'home'))
11
+ Dir.mkdir(virtual_home)
12
+ ENV['HOME'] = virtual_home
13
+
14
+ working_dir = File.join(tmpdir, 'work')
15
+ Dir.mkdir(working_dir)
16
+
17
+ Dir.chdir(working_dir) do
18
+ example.run
19
+ end
20
+ ensure
21
+ ENV['HOME'] = original_home
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,48 @@
1
+ RSpec::Matchers.define :report_lint do |options|
2
+ options ||= {}
3
+ count = options[:count]
4
+ expected_line = options[:line]
5
+
6
+ match do |linter|
7
+ has_lints?(linter, expected_line, count)
8
+ end
9
+
10
+ failure_message do |linter|
11
+ 'expected that a lint would be reported' +
12
+ (expected_line ? " on line #{expected_line}" : '') +
13
+ case linter.lints.count
14
+ when 0
15
+ ''
16
+ when 1
17
+ ", but was on line #{linter.lints.first.location.line}"
18
+ else
19
+ lines = lint_lines(linter)
20
+ ", but lints were reported on lines #{lines[0...-1].join(', ')} and #{lines.last}"
21
+ end
22
+ end
23
+
24
+ failure_message_when_negated do
25
+ 'expected that a lint would not be reported'
26
+ end
27
+
28
+ description do
29
+ 'report a lint' + (expected_line ? " on line #{expected_line}" : '')
30
+ end
31
+
32
+ def has_lints?(linter, expected_line, count)
33
+ if expected_line && count
34
+ linter.lints.count == count &&
35
+ lint_lines(linter).all? { |line| line == expected_line }
36
+ elsif expected_line
37
+ lint_lines(linter).include?(expected_line)
38
+ elsif count
39
+ linter.lints.count == count
40
+ else
41
+ linter.lints.count > 0
42
+ end
43
+ end
44
+
45
+ def lint_lines(linter)
46
+ linter.lints.map { |lint| lint.location.line }
47
+ end
48
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scss-lint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.1
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Causes Engineering
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-06-24 00:00:00.000000000 Z
12
+ date: 2014-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rainbow
@@ -32,6 +32,9 @@ dependencies:
32
32
  - - ~>
33
33
  - !ruby/object:Gem::Version
34
34
  version: 3.3.0
35
+ - - '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 3.3.7
35
38
  type: :runtime
36
39
  prerelease: false
37
40
  version_requirements: !ruby/object:Gem::Requirement
@@ -39,6 +42,9 @@ dependencies:
39
42
  - - ~>
40
43
  - !ruby/object:Gem::Version
41
44
  version: 3.3.0
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: 3.3.7
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: nokogiri
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -59,28 +65,28 @@ dependencies:
59
65
  requirements:
60
66
  - - ~>
61
67
  - !ruby/object:Gem::Version
62
- version: '2.0'
68
+ version: '3.0'
63
69
  type: :development
64
70
  prerelease: false
65
71
  version_requirements: !ruby/object:Gem::Requirement
66
72
  requirements:
67
73
  - - ~>
68
74
  - !ruby/object:Gem::Version
69
- version: '2.0'
75
+ version: '3.0'
70
76
  - !ruby/object:Gem::Dependency
71
77
  name: rubocop
72
78
  requirement: !ruby/object:Gem::Requirement
73
79
  requirements:
74
80
  - - '='
75
81
  - !ruby/object:Gem::Version
76
- version: 0.23.0
82
+ version: 0.24.1
77
83
  type: :development
78
84
  prerelease: false
79
85
  version_requirements: !ruby/object:Gem::Requirement
80
86
  requirements:
81
87
  - - '='
82
88
  - !ruby/object:Gem::Version
83
- version: 0.23.0
89
+ version: 0.24.1
84
90
  description: Configurable tool for writing clean and consistent SCSS
85
91
  email:
86
92
  - eng@causes.com
@@ -92,6 +98,7 @@ extra_rdoc_files: []
92
98
  files:
93
99
  - config/default.yml
94
100
  - data/properties.txt
101
+ - data/property-sort-orders/concentric.txt
95
102
  - lib/scss_lint/version.rb
96
103
  - lib/scss_lint/constants.rb
97
104
  - lib/scss_lint/utils.rb
@@ -108,6 +115,7 @@ files:
108
115
  - lib/scss_lint/selector_visitor.rb
109
116
  - lib/scss_lint/sass/tree.rb
110
117
  - lib/scss_lint/sass/script.rb
118
+ - lib/scss_lint/exceptions.rb
111
119
  - lib/scss_lint/config.rb
112
120
  - lib/scss_lint/linter/compass.rb
113
121
  - lib/scss_lint/linter/space_after_comma.rb
@@ -116,7 +124,7 @@ files:
116
124
  - lib/scss_lint/linter/hex_length.rb
117
125
  - lib/scss_lint/linter/indentation.rb
118
126
  - lib/scss_lint/linter/mergeable_selector.rb
119
- - lib/scss_lint/linter/trailing_semicolon_after_property_value.rb
127
+ - lib/scss_lint/linter/single_line_per_property.rb
120
128
  - lib/scss_lint/linter/shorthand.rb
121
129
  - lib/scss_lint/linter/final_newline.rb
122
130
  - lib/scss_lint/linter/id_with_extraneous_selector.rb
@@ -132,10 +140,12 @@ files:
132
140
  - lib/scss_lint/linter/property_spelling.rb
133
141
  - lib/scss_lint/linter/url_quotes.rb
134
142
  - lib/scss_lint/linter/name_format.rb
143
+ - lib/scss_lint/linter/unnecessary_parent_reference.rb
135
144
  - lib/scss_lint/linter/space_between_parens.rb
136
145
  - lib/scss_lint/linter/border_zero.rb
137
146
  - lib/scss_lint/linter/space_after_property_colon.rb
138
147
  - lib/scss_lint/linter/debug_statement.rb
148
+ - lib/scss_lint/linter/trailing_semicolon.rb
139
149
  - lib/scss_lint/linter/duplicate_property.rb
140
150
  - lib/scss_lint/linter/property_sort_order.rb
141
151
  - lib/scss_lint/linter/color_keyword.rb
@@ -151,6 +161,60 @@ files:
151
161
  - lib/scss_lint/engine.rb
152
162
  - lib/scss_lint/linter_registry.rb
153
163
  - lib/scss_lint.rb
164
+ - spec/scss_lint/location_spec.rb
165
+ - spec/scss_lint/reporter/files_reporter_spec.rb
166
+ - spec/scss_lint/reporter/xml_reporter_spec.rb
167
+ - spec/scss_lint/reporter/config_reporter_spec.rb
168
+ - spec/scss_lint/reporter/default_reporter_spec.rb
169
+ - spec/scss_lint/selector_visitor_spec.rb
170
+ - spec/scss_lint/runner_spec.rb
171
+ - spec/scss_lint/engine_spec.rb
172
+ - spec/scss_lint/reporter_spec.rb
173
+ - spec/scss_lint/config_spec.rb
174
+ - spec/scss_lint/linter_registry_spec.rb
175
+ - spec/scss_lint/cli_spec.rb
176
+ - spec/scss_lint/linter/final_newline_spec.rb
177
+ - spec/scss_lint/linter/color_keyword_spec.rb
178
+ - spec/scss_lint/linter/single_line_per_selector_spec.rb
179
+ - spec/scss_lint/linter/empty_rule_spec.rb
180
+ - spec/scss_lint/linter/hex_notation_spec.rb
181
+ - spec/scss_lint/linter/hex_length_spec.rb
182
+ - spec/scss_lint/linter/url_quotes_spec.rb
183
+ - spec/scss_lint/linter/space_between_parens_spec.rb
184
+ - spec/scss_lint/linter/border_zero_spec.rb
185
+ - spec/scss_lint/linter/property_spelling_spec.rb
186
+ - spec/scss_lint/linter/property_sort_order_spec.rb
187
+ - spec/scss_lint/linter/else_placement_spec.rb
188
+ - spec/scss_lint/linter/zero_unit_spec.rb
189
+ - spec/scss_lint/linter/mergeable_selector_spec.rb
190
+ - spec/scss_lint/linter/unnecessary_mantissa_spec.rb
191
+ - spec/scss_lint/linter/name_format_spec.rb
192
+ - spec/scss_lint/linter/capitalization_in_selector_spec.rb
193
+ - spec/scss_lint/linter/duplicate_property_spec.rb
194
+ - spec/scss_lint/linter/hex_validation_spec.rb
195
+ - spec/scss_lint/linter/space_before_brace_spec.rb
196
+ - spec/scss_lint/linter/compass/property_with_mixin_spec.rb
197
+ - spec/scss_lint/linter/placeholder_in_extend_spec.rb
198
+ - spec/scss_lint/linter/debug_statement_spec.rb
199
+ - spec/scss_lint/linter/string_quotes_spec.rb
200
+ - spec/scss_lint/linter/indentation_spec.rb
201
+ - spec/scss_lint/linter/unnecessary_parent_reference_spec.rb
202
+ - spec/scss_lint/linter/empty_line_between_blocks_spec.rb
203
+ - spec/scss_lint/linter/single_line_per_property_spec.rb
204
+ - spec/scss_lint/linter/space_after_property_colon_spec.rb
205
+ - spec/scss_lint/linter/declaration_order_spec.rb
206
+ - spec/scss_lint/linter/leading_zero_spec.rb
207
+ - spec/scss_lint/linter/url_format_spec.rb
208
+ - spec/scss_lint/linter/comment_spec.rb
209
+ - spec/scss_lint/linter/trailing_semicolon_spec.rb
210
+ - spec/scss_lint/linter/selector_depth_spec.rb
211
+ - spec/scss_lint/linter/space_after_comma_spec.rb
212
+ - spec/scss_lint/linter/shorthand_spec.rb
213
+ - spec/scss_lint/linter/id_with_extraneous_selector_spec.rb
214
+ - spec/scss_lint/linter/space_after_property_name_spec.rb
215
+ - spec/support/matchers/report_lint.rb
216
+ - spec/support/isolated_environment.rb
217
+ - spec/spec_helper.rb
154
218
  - bin/scss-lint
155
219
  homepage: https://github.com/causes/scss-lint
156
220
  licenses:
@@ -176,4 +240,58 @@ rubygems_version: 2.0.14
176
240
  signing_key:
177
241
  specification_version: 4
178
242
  summary: SCSS lint tool
179
- test_files: []
243
+ test_files:
244
+ - spec/scss_lint/location_spec.rb
245
+ - spec/scss_lint/reporter/files_reporter_spec.rb
246
+ - spec/scss_lint/reporter/xml_reporter_spec.rb
247
+ - spec/scss_lint/reporter/config_reporter_spec.rb
248
+ - spec/scss_lint/reporter/default_reporter_spec.rb
249
+ - spec/scss_lint/selector_visitor_spec.rb
250
+ - spec/scss_lint/runner_spec.rb
251
+ - spec/scss_lint/engine_spec.rb
252
+ - spec/scss_lint/reporter_spec.rb
253
+ - spec/scss_lint/config_spec.rb
254
+ - spec/scss_lint/linter_registry_spec.rb
255
+ - spec/scss_lint/cli_spec.rb
256
+ - spec/scss_lint/linter/final_newline_spec.rb
257
+ - spec/scss_lint/linter/color_keyword_spec.rb
258
+ - spec/scss_lint/linter/single_line_per_selector_spec.rb
259
+ - spec/scss_lint/linter/empty_rule_spec.rb
260
+ - spec/scss_lint/linter/hex_notation_spec.rb
261
+ - spec/scss_lint/linter/hex_length_spec.rb
262
+ - spec/scss_lint/linter/url_quotes_spec.rb
263
+ - spec/scss_lint/linter/space_between_parens_spec.rb
264
+ - spec/scss_lint/linter/border_zero_spec.rb
265
+ - spec/scss_lint/linter/property_spelling_spec.rb
266
+ - spec/scss_lint/linter/property_sort_order_spec.rb
267
+ - spec/scss_lint/linter/else_placement_spec.rb
268
+ - spec/scss_lint/linter/zero_unit_spec.rb
269
+ - spec/scss_lint/linter/mergeable_selector_spec.rb
270
+ - spec/scss_lint/linter/unnecessary_mantissa_spec.rb
271
+ - spec/scss_lint/linter/name_format_spec.rb
272
+ - spec/scss_lint/linter/capitalization_in_selector_spec.rb
273
+ - spec/scss_lint/linter/duplicate_property_spec.rb
274
+ - spec/scss_lint/linter/hex_validation_spec.rb
275
+ - spec/scss_lint/linter/space_before_brace_spec.rb
276
+ - spec/scss_lint/linter/compass/property_with_mixin_spec.rb
277
+ - spec/scss_lint/linter/placeholder_in_extend_spec.rb
278
+ - spec/scss_lint/linter/debug_statement_spec.rb
279
+ - spec/scss_lint/linter/string_quotes_spec.rb
280
+ - spec/scss_lint/linter/indentation_spec.rb
281
+ - spec/scss_lint/linter/unnecessary_parent_reference_spec.rb
282
+ - spec/scss_lint/linter/empty_line_between_blocks_spec.rb
283
+ - spec/scss_lint/linter/single_line_per_property_spec.rb
284
+ - spec/scss_lint/linter/space_after_property_colon_spec.rb
285
+ - spec/scss_lint/linter/declaration_order_spec.rb
286
+ - spec/scss_lint/linter/leading_zero_spec.rb
287
+ - spec/scss_lint/linter/url_format_spec.rb
288
+ - spec/scss_lint/linter/comment_spec.rb
289
+ - spec/scss_lint/linter/trailing_semicolon_spec.rb
290
+ - spec/scss_lint/linter/selector_depth_spec.rb
291
+ - spec/scss_lint/linter/space_after_comma_spec.rb
292
+ - spec/scss_lint/linter/shorthand_spec.rb
293
+ - spec/scss_lint/linter/id_with_extraneous_selector_spec.rb
294
+ - spec/scss_lint/linter/space_after_property_name_spec.rb
295
+ - spec/support/matchers/report_lint.rb
296
+ - spec/support/isolated_environment.rb
297
+ - spec/spec_helper.rb