Merge pull request #562 from Shopify/use-find_variable-for-parentloop

Use custom stack for forloop references
This commit is contained in:
Justin Li
2015-05-15 21:48:57 -04:00
4 changed files with 42 additions and 24 deletions
-19
View File
@@ -1,24 +1,5 @@
require 'test_helper'
class ErrorDrop < Liquid::Drop
def standard_error
raise Liquid::StandardError, 'standard error'
end
def argument_error
raise Liquid::ArgumentError, 'argument error'
end
def syntax_error
raise Liquid::SyntaxError, 'syntax error'
end
def exception
raise Exception, 'exception'
end
end
class ErrorHandlingTest < Minitest::Test
include Liquid
+10
View File
@@ -387,4 +387,14 @@ HERE
assert_template_result(expected, template, loader_assigns)
assert_template_result(expected, template, array_assigns)
end
def test_for_cleans_up_registers
context = Context.new(ErrorDrop.new)
assert_raises(StandardError) do
Liquid::Template.parse('{% for i in (1..2) %}{{ standard_error }}{% endfor %}').render!(context)
end
assert context.registers[:for_stack].empty?
end
end
+19
View File
@@ -88,3 +88,22 @@ class ThingWithToLiquid
'foobar'
end
end
class ErrorDrop < Liquid::Drop
def standard_error
raise Liquid::StandardError, 'standard error'
end
def argument_error
raise Liquid::ArgumentError, 'argument error'
end
def syntax_error
raise Liquid::SyntaxError, 'syntax error'
end
def exception
raise Exception, 'exception'
end
end