diff --git a/lib/liquid/utils.rb b/lib/liquid/utils.rb index 4ec7d8117..38a406ef2 100644 --- a/lib/liquid/utils.rb +++ b/lib/liquid/utils.rb @@ -16,11 +16,7 @@ def self.slice_collection_using_each(collection, from, to) # Maintains Ruby 1.8.7 String#each behaviour on 1.9 if collection.is_a?(String) - return [] if collection.empty? - if from > 0 || to == 0 - Usage.increment("string_slice_bug") - end - return [collection] + return collection.empty? ? [] : [collection] end return [] unless collection.respond_to?(:each) diff --git a/test/unit/tags/for_tag_unit_test.rb b/test/unit/tags/for_tag_unit_test.rb index cbb68fcb0..5a52c71c7 100644 --- a/test/unit/tags/for_tag_unit_test.rb +++ b/test/unit/tags/for_tag_unit_test.rb @@ -12,34 +12,4 @@ def test_for_else_nodelist 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