[Sass] Add a warning for selectors with no children.
This commit is contained in:
parent
d5dfaf6e56
commit
321e7b595f
|
@ -268,6 +268,7 @@ END
|
|||
continued_rule, child = nil, continued_rule
|
||||
end
|
||||
|
||||
check_for_no_children(child)
|
||||
validate_and_append_child(parent, child, line, root)
|
||||
end
|
||||
|
||||
|
@ -294,6 +295,22 @@ END
|
|||
end
|
||||
end
|
||||
|
||||
def check_for_no_children(node)
|
||||
return unless node.is_a?(Tree::RuleNode) && node.children.empty?
|
||||
warning = (node.rules.size == 1) ? <<SHORT : <<LONG
|
||||
WARNING:
|
||||
Selector #{node.rules.first.inspect} doesn't have any properties and will not be rendered.
|
||||
SHORT
|
||||
|
||||
WARNING:
|
||||
Selector
|
||||
#{node.rules.join("\n ")}
|
||||
doesn't have any properties and will not be rendered.
|
||||
LONG
|
||||
|
||||
warn(warning.strip)
|
||||
end
|
||||
|
||||
def parse_line(parent, line, root)
|
||||
case line.text[0]
|
||||
when PROPERTY_CHAR
|
||||
|
|
|
@ -130,7 +130,7 @@ class SassEngineTest < Test::Unit::TestCase
|
|||
define_method("test_exception (#{key.inspect})") do
|
||||
line = 10
|
||||
begin
|
||||
Sass::Engine.new(key, :filename => __FILE__, :line => line).render
|
||||
silence_warnings {Sass::Engine.new(key, :filename => __FILE__, :line => line).render}
|
||||
rescue Sass::SyntaxError => err
|
||||
value = [value] unless value.is_a?(Array)
|
||||
|
||||
|
@ -704,6 +704,24 @@ a
|
|||
SASS
|
||||
end
|
||||
|
||||
def test_empty_selector_warning
|
||||
assert_warning(<<END) {render("foo bar")}
|
||||
WARNING:
|
||||
Selector "foo bar" doesn't have any properties and will not be rendered.
|
||||
END
|
||||
|
||||
assert_warning(<<END) {render(<<SASS)}
|
||||
WARNING:
|
||||
Selector
|
||||
foo, bar, baz,
|
||||
bang, bip, bop
|
||||
doesn't have any properties and will not be rendered.
|
||||
END
|
||||
foo, bar, baz,
|
||||
bang, bip, bop
|
||||
SASS
|
||||
end
|
||||
|
||||
# Regression tests
|
||||
|
||||
def test_parens_in_mixins
|
||||
|
|
|
@ -243,21 +243,6 @@ WARN
|
|||
Sass::Engine.new(sass, options).render
|
||||
end
|
||||
|
||||
def assert_warning(message)
|
||||
the_real_stderr, $stderr = $stderr, StringIO.new
|
||||
yield
|
||||
assert_equal message.strip, $stderr.string.strip
|
||||
ensure
|
||||
$stderr = the_real_stderr
|
||||
end
|
||||
|
||||
def silence_warnings
|
||||
the_real_stderr, $stderr = $stderr, StringIO.new
|
||||
yield
|
||||
ensure
|
||||
$stderr = the_real_stderr
|
||||
end
|
||||
|
||||
def env(hash = {})
|
||||
env = Sass::Environment.new
|
||||
hash.each {|k, v| env.set_var(k, v)}
|
||||
|
|
|
@ -99,8 +99,6 @@ body
|
|||
:clear both
|
||||
.column
|
||||
:float left
|
||||
.left
|
||||
.middle
|
||||
.right
|
||||
:float right
|
||||
a:link, a:visited
|
||||
|
|
|
@ -26,4 +26,19 @@ class Test::Unit::TestCase
|
|||
path = File.dirname(__FILE__) + "/../.sass-cache"
|
||||
FileUtils.rm_r(path) if File.exist?(path)
|
||||
end
|
||||
|
||||
def assert_warning(message)
|
||||
the_real_stderr, $stderr = $stderr, StringIO.new
|
||||
yield
|
||||
assert_equal message.strip, $stderr.string.strip
|
||||
ensure
|
||||
$stderr = the_real_stderr
|
||||
end
|
||||
|
||||
def silence_warnings
|
||||
the_real_stderr, $stderr = $stderr, StringIO.new
|
||||
yield
|
||||
ensure
|
||||
$stderr = the_real_stderr
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue