mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-15 08:50:45 -07:00
Instrument usage of bug with iteration of String with offset or 0 limit (#1667)
This commit is contained in:
@@ -12,4 +12,34 @@ class ForTagUnitTest < Minitest::Test
|
||||
template = Liquid::Template.parse('{% for item in items %}FOR{% else %}ELSE{% endfor %}')
|
||||
assert_equal(['FOR', 'ELSE'], template.root.nodelist[0].nodelist.map(&:nodelist).flatten)
|
||||
end
|
||||
|
||||
def test_for_string_slice_bug_usage
|
||||
template = Liquid::Template.parse("{% for x in str, offset: 1 %}{{ x }},{% endfor %}")
|
||||
assert_usage("string_slice_bug") do
|
||||
assert_equal("abc,", template.render({ "str" => "abc" }))
|
||||
end
|
||||
end
|
||||
|
||||
def test_for_string_0_limit_usage
|
||||
template = Liquid::Template.parse("{% for x in str, limit: 0 %}{{ x }},{% endfor %}")
|
||||
assert_usage("string_slice_bug") do
|
||||
assert_equal("abc,", template.render({ "str" => "abc" }))
|
||||
end
|
||||
end
|
||||
|
||||
def test_for_string_no_slice_usage
|
||||
template = Liquid::Template.parse("{% for x in str, offset: 0, limit: 1 %}{{ x }},{% endfor %}")
|
||||
assert_usage("string_slice_bug", times: 0) do
|
||||
assert_equal("abc,", template.render({ "str" => "abc" }))
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def assert_usage(name, times: 1, &block)
|
||||
count = 0
|
||||
result = Liquid::Usage.stub(:increment, ->(n) { count += 1 if n == name }, &block)
|
||||
assert_equal(times, count)
|
||||
result
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user