From cf5ccede50ae772afddc3e02fcf8be7e7210fbf5 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Wed, 1 Oct 2014 18:51:06 -0500 Subject: [PATCH] Avoid modifying the default resources limits hash. --- lib/liquid/context.rb | 2 +- test/integration/template_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 5eb8bd6..aab1def 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -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) } diff --git a/test/integration/template_test.rb b/test/integration/template_test.rb index 7fdd85f..9a4c979 100644 --- a/test/integration/template_test.rb +++ b/test/integration/template_test.rb @@ -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'