From 01c25a11a3923d9f3a8a00b821c0aba2b586da23 Mon Sep 17 00:00:00 2001 From: Brian Candler Date: Sat, 6 Jun 2009 16:32:20 +0100 Subject: [PATCH] Raise FilterNotFound on use of non-existent filter --- lib/liquid/context.rb | 2 +- test/context_test.rb | 4 +++- test/security_test.rb | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 0ba943b7..b757ce99 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -56,7 +56,7 @@ module Liquid if strainer.respond_to?(method) strainer.__send__(method, *args) else - args.first + raise FilterNotFound, "Filter '#{method}' not found" end end diff --git a/test/context_test.rb b/test/context_test.rb index 5c23376d..a57432b8 100644 --- a/test/context_test.rb +++ b/test/context_test.rb @@ -156,7 +156,9 @@ class ContextTest < Test::Unit::TestCase assert_equal 'hi? hi!', context.invoke(:hi, 'hi?') context = Context.new(@template) - assert_equal 'hi?', context.invoke(:hi, 'hi?') + assert_raises(FilterNotFound) { + context.invoke(:hi, 'hi?') + } context.add_filters(filter) assert_equal 'hi? hi!', context.invoke(:hi, 'hi?') diff --git a/test/security_test.rb b/test/security_test.rb index 1ab0d6fa..7bd600bb 100644 --- a/test/security_test.rb +++ b/test/security_test.rb @@ -11,14 +11,14 @@ class SecurityTest < Test::Unit::TestCase def test_no_instance_eval text = %( {{ '1+1' | instance_eval }} ) - expected = %| 1+1 | + expected = %! Liquid error: Error - filter 'instance_eval' in ''1+1' | instance_eval' could not be found. ! assert_equal expected, Template.parse(text).render(@assigns) end def test_no_existing_instance_eval text = %( {{ '1+1' | __instance_eval__ }} ) - expected = %| 1+1 | + expected = %! Liquid error: Error - filter '__instance_eval__' in ''1+1' | __instance_eval__' could not be found. ! assert_equal expected, Template.parse(text).render(@assigns) end @@ -26,7 +26,7 @@ class SecurityTest < Test::Unit::TestCase def test_no_instance_eval_after_mixing_in_new_filter text = %( {{ '1+1' | instance_eval }} ) - expected = %| 1+1 | + expected = %! Liquid error: Error - filter 'instance_eval' in ''1+1' | instance_eval' could not be found. ! assert_equal expected, Template.parse(text).render(@assigns) end @@ -34,7 +34,7 @@ class SecurityTest < Test::Unit::TestCase def test_no_instance_eval_later_in_chain text = %( {{ '1+1' | add_one | instance_eval }} ) - expected = %| 1+1 + 1 | + expected = %! Liquid error: Error - filter 'instance_eval' in ''1+1' | add_one | instance_eval' could not be found. ! assert_equal expected, Template.parse(text).render(@assigns, :filters => SecurityFilter) end