diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 3aefd34..ab19071 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -21,12 +21,7 @@ module Liquid @scopes = [(outer_scope || {})] @registers = registers @errors = [] - - @resource_limits = if resource_limits.is_a?(ResourceLimits) - resource_limits - else - ResourceLimits.new(resource_limits || Template.default_resource_limits) - end + @resource_limits = resource_limits || ResourceLimits.new(Template.default_resource_limits) squash_instance_assigns_with_environments @this_stack_used = false diff --git a/lib/liquid/template.rb b/lib/liquid/template.rb index 277c026..9928c81 100644 --- a/lib/liquid/template.rb +++ b/lib/liquid/template.rb @@ -21,10 +21,6 @@ module Liquid attr_accessor :root attr_reader :resource_limits - def resource_limits=(limits) - @resource_limits = ResourceLimits.new(limits) - end - @@file_system = BlankFileSystem.new class TagRegistry @@ -116,7 +112,7 @@ module Liquid end def initialize - self.resource_limits = self.class.default_resource_limits + @resource_limits = ResourceLimits.new(self.class.default_resource_limits) end # Parse source code. diff --git a/test/integration/template_test.rb b/test/integration/template_test.rb index 4857b6e..2e923af 100644 --- a/test/integration/template_test.rb +++ b/test/integration/template_test.rb @@ -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