mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
37 lines
1 KiB
Ruby
37 lines
1 KiB
Ruby
require File.dirname(__FILE__) + '/../../test_helper'
|
|
require 'sass/engine'
|
|
|
|
module ScssTestHelper
|
|
def assert_parses(scss)
|
|
assert_equal scss.rstrip, render(scss).rstrip
|
|
end
|
|
|
|
def assert_not_parses(expected, scss)
|
|
raise "Template must include <err> where an error is expected" unless scss.include?("<err>")
|
|
|
|
after, was = scss.split("<err>")
|
|
line = after.count("\n") + 1
|
|
|
|
after.gsub!(/\s*\n\s*$/, '')
|
|
after.gsub!(/.*\n/, '')
|
|
after = "..." + after[-15..-1] if after.size > 18
|
|
|
|
was.gsub!(/^\s*\n\s*/, '')
|
|
was.gsub!(/\n.*/, '')
|
|
was = was[0...15] + "..." if was.size > 18
|
|
|
|
to_render = scss.sub("<err>", "")
|
|
render(to_render)
|
|
assert(false, "Expected syntax error for:\n#{to_render}\n")
|
|
rescue Sass::SyntaxError => err
|
|
assert_equal("Invalid CSS after \"#{after}\": expected #{expected}, was \"#{was}\"",
|
|
err.message)
|
|
assert_equal line, err.sass_line
|
|
end
|
|
|
|
def render(scss, options = {})
|
|
options[:syntax] ||= :scss
|
|
munge_filename options
|
|
Sass::Engine.new(scss, options).render
|
|
end
|
|
end
|