Avoid modifying the default resources limits hash.

This commit is contained in:
Dylan Thacker-Smith
2014-10-01 18:51:06 -05:00
parent 23622a9739
commit cf5ccede50
2 changed files with 13 additions and 1 deletions

View File

@@ -21,7 +21,7 @@ module Liquid
@scopes = [(outer_scope || {})]
@registers = registers
@errors = []
@resource_limits = resource_limits || Template.default_resource_limits
@resource_limits = resource_limits || Template.default_resource_limits.dup
@resource_limits[:render_score_current] = 0
@resource_limits[:assign_score_current] = 0
@parsed_expression = Hash.new{ |cache, markup| cache[markup] = Expression.parse(markup) }

View File

@@ -135,6 +135,18 @@ class TemplateTest < Minitest::Test
assert t.resource_limits[:render_length_current] > 0
end
def test_default_resource_limits_unaffected_by_render_with_context
context = Context.new
t = Template.parse("{% for a in (1..100) %} {% assign foo = 1 %} {% endfor %}")
t.render!(context)
assert context.resource_limits[:assign_score_current] > 0
assert context.resource_limits[:render_score_current] > 0
assert context.resource_limits[:render_length_current] > 0
refute Template.default_resource_limits.key?(:assign_score_current)
refute Template.default_resource_limits.key?(:render_score_current)
refute Template.default_resource_limits.key?(:render_length_current)
end
def test_can_use_drop_as_context
t = Template.new
t.registers['lulz'] = 'haha'