From b555b7efa643a8821cff3c1fa9c08e49be95e41c Mon Sep 17 00:00:00 2001 From: Nathan Weizenbaum Date: Thu, 25 Dec 2008 14:17:12 -0800 Subject: [PATCH] Add a bunch of tests for Sass warnings. One broken test for a minor error. --- test/sass/engine_test.rb | 7 ++--- test/sass/script_test.rb | 63 +++++++++++++++++++++++++++++++++------- test/test_helper.rb | 8 +++++ 3 files changed, 62 insertions(+), 16 deletions(-) diff --git a/test/sass/engine_test.rb b/test/sass/engine_test.rb index b0a96f0b..9cc35c3e 100755 --- a/test/sass/engine_test.rb +++ b/test/sass/engine_test.rb @@ -718,12 +718,9 @@ SASS end private - + def render(sass, options = {}) - unless options[:filename] - test_name = caller.first.gsub(/^.*`(.*)'.*$/, '\1') - options[:filename] = "#{test_name}_inline.sass" - end + munge_filename options Sass::Engine.new(sass, options).render end diff --git a/test/sass/script_test.rb b/test/sass/script_test.rb index e5d78466..492a23b3 100644 --- a/test/sass/script_test.rb +++ b/test/sass/script_test.rb @@ -5,15 +5,6 @@ require 'sass/engine' class SassScriptTest < Test::Unit::TestCase include Sass::Script - def resolve(str, opts = {}, environment = {}) - eval(str, opts, environment).to_s - end - - def eval(str, opts = {}, environment = {}) - Sass::Script.parse(str, opts[:line] || 0, - opts[:offset] || 0, opts[:filename]).perform(environment) - end - def test_color_checks_input assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([1, 2, -1])} assert_raise(Sass::SyntaxError, "Color values must be between 0 and 255") {Color.new([256, 2, 3])} @@ -39,9 +30,43 @@ class SassScriptTest < Test::Unit::TestCase end end + def test_warning_reporting + assert_warning(< 2, :filename => 'test_inaccessible_functions_inline.sass') + assert_warning < 2) end assert_equal "public_instance_methods()", resolve("public_instance_methods()") end @@ -54,6 +79,22 @@ class SassScriptTest < Test::Unit::TestCase private + def resolve(str, opts = {}, environment = {}) + munge_filename opts + eval(str, opts, environment).to_s + end + + def eval(str, opts = {}, environment = {}) + munge_filename opts + Sass::Script.parse(str, opts[:line] || 1, + opts[:offset] || 0, opts[:filename]).perform(environment) + end + + def render(sass, options = {}) + munge_filename options + Sass::Engine.new(sass, options).render + end + def assert_warning(message) the_real_stderr, $stderr = $stderr, StringIO.new yield diff --git a/test/test_helper.rb b/test/test_helper.rb index f15fe129..aa5342df 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -11,3 +11,11 @@ unless defined? RAILS_ROOT RAILS_ROOT = '.' MERB_ENV = RAILS_ENV = 'testing' end + +class Test::Unit::TestCase + def munge_filename(opts) + return if opts[:filename] + test_name = caller[1].gsub(/^.*`(.*)'.*$/, '\1') + opts[:filename] = "#{test_name}_inline.sass" + end +end