Skip to content

Commit

Permalink
Raise FilterNotFound on use of non-existent filter
Browse files Browse the repository at this point in the history
  • Loading branch information
candlerb committed Jun 6, 2009
1 parent f29b933 commit 01c25a1
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 6 deletions.
2 changes: 1 addition & 1 deletion lib/liquid/context.rb
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def invoke(method, *args)
if strainer.respond_to?(method)
strainer.__send__(method, *args)
else
args.first
raise FilterNotFound, "Filter '#{method}' not found"
end
end

Expand Down
4 changes: 3 additions & 1 deletion test/context_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,9 @@ def hi(output)
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?')
Expand Down
8 changes: 4 additions & 4 deletions test/security_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -11,30 +11,30 @@ 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


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


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
Expand Down

0 comments on commit 01c25a1

Please sign in to comment.