diff --git a/test/integration/assign_test.rb b/test/integration/assign_test.rb index 99a32dc..d65aa96 100644 --- a/test/integration/assign_test.rb +++ b/test/integration/assign_test.rb @@ -47,4 +47,32 @@ class AssignTest < Minitest::Test assert Template.parse("{% assign foo = ('X' | downcase) %}") end end -end # AssignTest + + def test_assign_score_exceeding_resource_limit + t = Template.parse("{% assign foo = 42 %}{% assign bar = 23 %}") + 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 + assert_equal("", t.render!) + refute_nil(t.resource_limits.assign_score) + end + + def test_assign_score_exceeding_limit_from_composite_object + t = Template.parse("{% assign foo = 'aaaa' | reverse %}") + + t.resource_limits.assign_score_limit = 3 + assert_equal("Liquid error: Memory limits exceeded", t.render) + assert(t.resource_limits.reached?) + + t.resource_limits.assign_score_limit = 5 + assert_equal("", t.render!) + end + + def test_assign_score_counts_bytes_not_characters + t = Template.parse("{% assign foo = 'すごい' %}") + t.render + assert_equal(9, t.resource_limits.assign_score) + end +end diff --git a/test/integration/capture_test.rb b/test/integration/capture_test.rb index 39098dd..c2dc526 100644 --- a/test/integration/capture_test.rb +++ b/test/integration/capture_test.rb @@ -49,4 +49,10 @@ class CaptureTest < Minitest::Test rendered = template.render! assert_equal("3-3", rendered.gsub(/\s/, '')) end -end # CaptureTest + + def test_increment_assign_score_by_bytes_not_characters + t = Template.parse("{% capture foo %}すごい{% endcapture %}") + t.render! + assert_equal(9, t.resource_limits.assign_score) + end +end diff --git a/test/integration/template_test.rb b/test/integration/template_test.rb index 246c645..8cc3d79 100644 --- a/test/integration/template_test.rb +++ b/test/integration/template_test.rb @@ -135,38 +135,6 @@ class TemplateTest < Minitest::Test 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 - assert_equal("Liquid error: Memory limits exceeded", t.render) - assert(t.resource_limits.reached?) - - t.resource_limits.assign_score_limit = 2 - assert_equal("", t.render!) - refute_nil(t.resource_limits.assign_score) - end - - def test_resource_limits_assign_score_counts_bytes_not_characters - t = Template.parse("{% assign foo = 'すごい' %}") - t.render - assert_equal(9, t.resource_limits.assign_score) - - t = Template.parse("{% capture foo %}すごい{% endcapture %}") - t.render - assert_equal(9, t.resource_limits.assign_score) - end - - def test_resource_limits_assign_score_nested - t = Template.parse("{% assign foo = 'aaaa' | reverse %}") - - t.resource_limits.assign_score_limit = 3 - assert_equal("Liquid error: Memory limits exceeded", t.render) - assert(t.resource_limits.reached?) - - t.resource_limits.assign_score_limit = 5 - assert_equal("", t.render!) - 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