From 4239c899a4a397cd9df3856813291e5492c73c99 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Wed, 30 Mar 2016 16:52:53 -0400 Subject: [PATCH] Raise a Liquid::Error when a non-array is passed into the concat filter. --- lib/liquid/standardfilters.rb | 5 ++++- test/integration/standard_filter_test.rb | 3 +-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/liquid/standardfilters.rb b/lib/liquid/standardfilters.rb index 046b35a..206e66a 100644 --- a/lib/liquid/standardfilters.rb +++ b/lib/liquid/standardfilters.rb @@ -216,6 +216,9 @@ module Liquid end def concat(input, array) + unless array.respond_to?(:to_ary) + raise ArgumentError.new("concat filter requires an array argument") + end InputIterator.new(input).concat(array) end @@ -370,7 +373,7 @@ module Liquid end def concat(args) - to_a.concat args + to_a.concat(args) end def reverse diff --git a/test/integration/standard_filter_test.rb b/test/integration/standard_filter_test.rb index 7412f65..bfd8428 100644 --- a/test/integration/standard_filter_test.rb +++ b/test/integration/standard_filter_test.rb @@ -463,8 +463,7 @@ class StandardFiltersTest < Minitest::Test assert_equal [1, 2, 'a'], @filters.concat([1, 2], ['a']) assert_equal [1, 2, 10], @filters.concat([1, 2], [10]) - assert_raises(TypeError) do - # no implicit conversion of Fixnum into Array + assert_raises(Liquid::ArgumentError, "concat filter requires an array argument") do @filters.concat([1, 2], 10) end end