mirror of
https://github.com/haml/haml.git
synced 2022-11-09 12:33:31 -05:00
[Sass] Add a few tests for plugin callbacks.
This commit is contained in:
parent
ccaee1f1aa
commit
9ab1de0f8e
1 changed files with 85 additions and 0 deletions
|
@ -19,6 +19,7 @@ class SassPluginTest < Test::Unit::TestCase
|
||||||
|
|
||||||
def teardown
|
def teardown
|
||||||
clean_up_sassc
|
clean_up_sassc
|
||||||
|
clear_callbacks
|
||||||
FileUtils.rm_r tempfile_loc
|
FileUtils.rm_r tempfile_loc
|
||||||
FileUtils.rm_r tempfile_loc(nil,"more_")
|
FileUtils.rm_r tempfile_loc(nil,"more_")
|
||||||
end
|
end
|
||||||
|
@ -131,6 +132,45 @@ CSS
|
||||||
assert !File.exists?(tempfile_loc('_partial'))
|
assert !File.exists?(tempfile_loc('_partial'))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# Callbacks
|
||||||
|
|
||||||
|
def test_updating_stylesheets_callback
|
||||||
|
# Should run even when there's nothing to update
|
||||||
|
assert_callback :updating_stylesheets, []
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_updating_stylesheets_callback_with_individual_files
|
||||||
|
files = [[template_loc("basic"), tempfile_loc("basic")]]
|
||||||
|
assert_callback(:updating_stylesheets, files) {Sass::Plugin.update_stylesheets(files)}
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_updating_stylesheets_callback_with_never_update
|
||||||
|
Sass::Plugin.options[:never_update] = true
|
||||||
|
assert_no_callback :updating_stylesheets
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_updating_stylesheet_callback_for_updated_template
|
||||||
|
Sass::Plugin.options[:always_update] = false
|
||||||
|
sleep 1
|
||||||
|
FileUtils.touch(template_loc("basic"))
|
||||||
|
assert_no_callback :updating_stylesheet, template_loc("complex"), tempfile_loc("complex") do
|
||||||
|
assert_callbacks(
|
||||||
|
[:updating_stylesheet, template_loc("basic"), tempfile_loc("basic")],
|
||||||
|
[:updating_stylesheet, template_loc("import"), tempfile_loc("import")])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_updating_stylesheet_callback_for_fresh_template
|
||||||
|
Sass::Plugin.options[:always_update] = false
|
||||||
|
assert_no_callback :updating_stylesheet
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_updating_stylesheet_callback_for_error_template
|
||||||
|
Sass::Plugin.options[:always_update] = false
|
||||||
|
FileUtils.touch(template_loc("bork1"))
|
||||||
|
assert_no_callback :updating_stylesheet
|
||||||
|
end
|
||||||
|
|
||||||
## Regression
|
## Regression
|
||||||
|
|
||||||
def test_cached_dependencies_update
|
def test_cached_dependencies_update
|
||||||
|
@ -180,6 +220,51 @@ CSS
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def assert_callback(name, *expected_args)
|
||||||
|
run = false
|
||||||
|
Sass::Plugin.send("on_#{name}") do |*a|
|
||||||
|
run = true if expected_args == a
|
||||||
|
end
|
||||||
|
|
||||||
|
if block_given?
|
||||||
|
yield
|
||||||
|
else
|
||||||
|
Sass::Plugin.update_stylesheets
|
||||||
|
end
|
||||||
|
|
||||||
|
assert run, "Expected #{name} callback to be run with arguments:\n #{expected_args.inspect}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_no_callback(name, *unexpected_args)
|
||||||
|
Sass::Plugin.send("on_#{name}") do |*a|
|
||||||
|
next unless unexpected_args.empty? || a == unexpected_args
|
||||||
|
|
||||||
|
msg = "Expected #{name} callback not to be run"
|
||||||
|
if !unexpected_args.empty?
|
||||||
|
msg << " with arguments #{unexpected_args.inspect}"
|
||||||
|
elsif !a.empty?
|
||||||
|
msg << ",\n was run with arguments #{a.inspect}"
|
||||||
|
end
|
||||||
|
|
||||||
|
flunk msg
|
||||||
|
end
|
||||||
|
|
||||||
|
if block_given?
|
||||||
|
yield
|
||||||
|
else
|
||||||
|
Sass::Plugin.update_stylesheets
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
def assert_callbacks(*args)
|
||||||
|
return Sass::Plugin.update_stylesheets if args.empty?
|
||||||
|
assert_callback(*args.pop) {assert_callbacks(*args)}
|
||||||
|
end
|
||||||
|
|
||||||
|
def clear_callbacks
|
||||||
|
Sass::Plugin.instance_variable_set('@_sass_callbacks', {})
|
||||||
|
end
|
||||||
|
|
||||||
def template_loc(name = nil, prefix = nil)
|
def template_loc(name = nil, prefix = nil)
|
||||||
if name
|
if name
|
||||||
absolutize "#{prefix}templates/#{name}.sass"
|
absolutize "#{prefix}templates/#{name}.sass"
|
||||||
|
|
Loading…
Add table
Reference in a new issue