Simplify interface for setting template resource limits

This commit is contained in:
Justin Li
2014-12-04 16:17:53 -05:00
parent db00ec8b32
commit 1593b784a7
3 changed files with 15 additions and 21 deletions

View File

@@ -93,51 +93,54 @@ class TemplateTest < Minitest::Test
def test_resource_limits_works_with_custom_length_method
t = Template.parse("{% assign foo = bar %}")
t.resource_limits = { :render_length_limit => 42 }
t.resource_limits.render_length_limit = 42
assert_equal "", t.render!("bar" => SomethingWithLength.new)
end
def test_resource_limits_render_length
t = Template.parse("0123456789")
t.resource_limits = { :render_length_limit => 5 }
t.resource_limits.render_length_limit = 5
assert_equal "Liquid error: Memory limits exceeded", t.render()
assert t.resource_limits.reached?
t.resource_limits = { :render_length_limit => 10 }
t.resource_limits.render_length_limit = 10
assert_equal "0123456789", t.render!()
refute_nil t.resource_limits.render_length
end
def test_resource_limits_render_score
t = Template.parse("{% for a in (1..10) %} {% for a in (1..10) %} foo {% endfor %} {% endfor %}")
t.resource_limits = { :render_score_limit => 50 }
t.resource_limits.render_score_limit = 50
assert_equal "Liquid error: Memory limits exceeded", t.render()
assert t.resource_limits.reached?
t = Template.parse("{% for a in (1..100) %} foo {% endfor %}")
t.resource_limits = { :render_score_limit => 50 }
t.resource_limits.render_score_limit = 50
assert_equal "Liquid error: Memory limits exceeded", t.render()
assert t.resource_limits.reached?
t.resource_limits = { :render_score_limit => 200 }
t.resource_limits.render_score_limit = 200
assert_equal (" foo " * 100), t.render!()
refute_nil t.resource_limits.render_score
end
def test_resource_limits_assign_score
t = Template.parse("{% assign foo = 42 %}{% assign bar = 23 %}")
t.resource_limits = { :assign_score_limit => 1 }
markup = "{% assign foo = 42 %}{% assign bar = 23 %}"
t = Template.parse(markup)
t.resource_limits.assign_score_limit = 1
assert_equal "Liquid error: Memory limits exceeded", t.render()
assert t.resource_limits.reached?
t.resource_limits = { :assign_score_limit => 2 }
t = Template.parse(markup)
t.resource_limits.assign_score_limit = 2
assert_equal "", t.render!()
refute_nil t.resource_limits.assign_score
end
def test_resource_limits_aborts_rendering_after_first_error
t = Template.parse("{% for a in (1..100) %} foo1 {% endfor %} bar {% for a in (1..100) %} foo2 {% endfor %}")
t.resource_limits = { :render_score_limit => 50 }
t.resource_limits.render_score_limit = 50
assert_equal "Liquid error: Memory limits exceeded", t.render()
assert t.resource_limits.reached?
end