mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
[Sass] Only display text on the current line when reporting css2sass errors.
This commit is contained in:
parent
de8e5a0776
commit
0e68e5fcf5
3 changed files with 28 additions and 8 deletions
|
@ -16,10 +16,14 @@ In addition, when the `sass` executable encounters an error,
|
||||||
it now prints the filename where the error occurs,
|
it now prints the filename where the error occurs,
|
||||||
as well as a backtrace of Sass imports.
|
as well as a backtrace of Sass imports.
|
||||||
|
|
||||||
### Minor Changes
|
### `css2sass` Error Handling
|
||||||
|
|
||||||
* `css2sass` error handling and reporting has been improved,
|
Several bug fixes and minor improvements have been made, including:
|
||||||
including fixing line-number reporting for templates without trailing newlines.
|
|
||||||
|
* Fixing line-number reporting for errors on the last line of templates
|
||||||
|
that didn't have trailing newlines.
|
||||||
|
|
||||||
|
* Only displaying the text for the current line when reporting CSS parsing errors.
|
||||||
|
|
||||||
## [2.2.4](http://github.com/nex3/haml/commit/2.2.4)
|
## [2.2.4](http://github.com/nex3/haml/commit/2.2.4)
|
||||||
|
|
||||||
|
|
|
@ -201,13 +201,13 @@ module Sass
|
||||||
|
|
||||||
pos = @template.pos
|
pos = @template.pos
|
||||||
|
|
||||||
after = @template.string[pos - 15...pos]
|
after = @template.string[[pos - 15, 0].max...pos].gsub(/.*\n/m, '')
|
||||||
after = "..." + after if pos >= 15
|
after = "..." + after if pos >= 15
|
||||||
|
|
||||||
# Display basic regexps as plain old strings
|
# Display basic regexps as plain old strings
|
||||||
expected = re.source == Regexp.escape(re.source) ? "\"#{re.source}\"" : re.inspect
|
expected = re.source == Regexp.escape(re.source) ? "\"#{re.source}\"" : re.inspect
|
||||||
|
|
||||||
was = @template.rest[0...15]
|
was = @template.rest[0...15].gsub(/\n.*/m, '')
|
||||||
was += "..." if @template.rest.size >= 15
|
was += "..." if @template.rest.size >= 15
|
||||||
raise Sass::SyntaxError.new(
|
raise Sass::SyntaxError.new(
|
||||||
"Invalid CSS after #{after.inspect}: expected #{expected}, was #{was.inspect}")
|
"Invalid CSS after #{after.inspect}: expected #{expected}, was #{was.inspect}")
|
||||||
|
|
|
@ -235,15 +235,31 @@ CSS
|
||||||
assert(false, "Expected exception")
|
assert(false, "Expected exception")
|
||||||
rescue Sass::SyntaxError => err
|
rescue Sass::SyntaxError => err
|
||||||
assert_equal(1, err.sass_line)
|
assert_equal(1, err.sass_line)
|
||||||
assert_equal('Invalid CSS after nil: expected /\{/, was ""', err.message)
|
assert_equal('Invalid CSS after "foo": expected /\{/, was ""', err.message)
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_error_reporting_in_line
|
def test_error_reporting_in_line
|
||||||
css2sass("foo\nbar }")
|
css2sass("foo\nbar }\nbaz")
|
||||||
assert(false, "Expected exception")
|
assert(false, "Expected exception")
|
||||||
rescue Sass::SyntaxError => err
|
rescue Sass::SyntaxError => err
|
||||||
assert_equal(2, err.sass_line)
|
assert_equal(2, err.sass_line)
|
||||||
assert_equal('Invalid CSS after "o\nbar ": expected /\{/, was "}"', err.message)
|
assert_equal('Invalid CSS after "bar ": expected /\{/, was "}"', err.message)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_error_truncate_after
|
||||||
|
css2sass("#{"a" * 15}foo")
|
||||||
|
assert(false, "Expected exception")
|
||||||
|
rescue Sass::SyntaxError => err
|
||||||
|
assert_equal(1, err.sass_line)
|
||||||
|
assert_equal('Invalid CSS after "...aaaaaaaaaaaafoo": expected /\{/, was ""', err.message)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_error_truncate_was
|
||||||
|
css2sass("foo }#{"a" * 15}")
|
||||||
|
assert(false, "Expected exception")
|
||||||
|
rescue Sass::SyntaxError => err
|
||||||
|
assert_equal(1, err.sass_line)
|
||||||
|
assert_equal('Invalid CSS after "foo ": expected /\{/, was "}aaaaaaaaaaaaaa..."', err.message)
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
Loading…
Add table
Reference in a new issue