gems.sass-3.2.8.test.sass.css2sass_test.rb Maven / Gradle / Ivy
Go to download
Sass makes CSS fun again. Sass is an extension of CSS3, adding nested rules, variables, mixins, selector
inheritance, and more. It's translated to well-formatted, standard CSS using the command line tool or a
web-framework plugin.
This is a repackaged GEM in a JAR format of the sass-lang.gem package. The sass-gems package version
follows the sass-lang.gem versions located http://rubyforge.org/frs/?group_id=9702. Simply change
the version of this package to download and repackage the same GEM version.
#!/usr/bin/env ruby
require 'test/unit'
require File.dirname(__FILE__) + '/../test_helper'
require 'sass/css'
class CSS2SassTest < Test::Unit::TestCase
def test_basic
css = < true))
h1
:color red
SASS
end
def test_nesting
assert_equal(<
.bar
a: b
.baz
c: d
SASS
.foo>.bar {a: b}
.foo>.baz {c: d}
CSS
assert_equal(< .baz
c: d
SASS
.bar > .baz {c: d}
CSS
end
# Error reporting
def test_error_reporting
css2sass("foo")
assert(false, "Expected exception")
rescue Sass::SyntaxError => err
assert_equal(1, err.sass_line)
assert_equal('Invalid CSS after "foo": expected "{", was ""', err.message)
end
def test_error_reporting_in_line
css2sass("foo\nbar }\nbaz")
assert(false, "Expected exception")
rescue Sass::SyntaxError => err
assert_equal(2, err.sass_line)
assert_equal('Invalid CSS after "bar ": expected "{", was "}"', err.message)
end
def test_error_truncate_after
css2sass("#{"a" * 16}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 }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 "}fooaaaaaaaaaaa..."', err.message)
end
def test_error_doesnt_truncate_after_when_elipsis_would_add_length
css2sass("#{"a" * 15}foo")
assert(false, "Expected exception")
rescue Sass::SyntaxError => err
assert_equal(1, err.sass_line)
assert_equal('Invalid CSS after "aaaaaaaaaaaaaaafoo": expected "{", was ""', err.message)
end
def test_error_doesnt_truncate_was_when_elipsis_would_add_length
css2sass("foo }foo#{"a" * 14}")
assert(false, "Expected exception")
rescue Sass::SyntaxError => err
assert_equal(1, err.sass_line)
assert_equal('Invalid CSS after "foo ": expected "{", was "}fooaaaaaaaaaaaaaa"', err.message)
end
def test_error_gets_rid_of_trailing_newline_for_after
css2sass("foo \n ")
assert(false, "Expected exception")
rescue Sass::SyntaxError => err
assert_equal(2, err.sass_line)
assert_equal('Invalid CSS after "foo": expected "{", was ""', err.message)
end
def test_error_gets_rid_of_trailing_newline_for_was
css2sass("foo \n }foo")
assert(false, "Expected exception")
rescue Sass::SyntaxError => err
assert_equal(2, err.sass_line)
assert_equal('Invalid CSS after "foo": expected "{", was "}foo"', err.message)
end
# Encodings
unless Sass::Util.ruby1_8?
def test_encoding_error
css2sass("foo\nbar\nb\xFEaz".force_encoding("utf-8"))
assert(false, "Expected exception")
rescue Sass::SyntaxError => e
assert_equal(3, e.sass_line)
assert_equal('Invalid UTF-8 character "\xFE"', e.message)
end
def test_ascii_incompatible_encoding_error
template = "foo\nbar\nb_z".encode("utf-16le")
template[9] = "\xFE".force_encoding("utf-16le")
css2sass(template)
assert(false, "Expected exception")
rescue Sass::SyntaxError => e
assert_equal(3, e.sass_line)
assert_equal('Invalid UTF-16LE character "\xFE"', e.message)
end
end
private
def css2sass(string, opts={})
Sass::CSS.new(string, opts).render
end
end