diff --git a/lib/liquid/condition.rb b/lib/liquid/condition.rb index 9573f6b..49e0d8b 100644 --- a/lib/liquid/condition.rb +++ b/lib/liquid/condition.rb @@ -113,7 +113,7 @@ module Liquid elsif left.respond_to?(operation) && right.respond_to?(operation) begin left.send(operation, right) - rescue ::ArgumentError => e + rescue ::ArgumentError, TypeError => e raise Liquid::ArgumentError.new(e.message) end end diff --git a/test/unit/condition_unit_test.rb b/test/unit/condition_unit_test.rb index 8dfc788..9c4bf35 100644 --- a/test/unit/condition_unit_test.rb +++ b/test/unit/condition_unit_test.rb @@ -57,6 +57,11 @@ class ConditionUnitTest < Minitest::Test assert_evaluates_argument_error 1, '~~', 0 end + def test_comparing_hash_and_integer + assert_evaluates_argument_error({a: 1}, '>', 1) + assert_evaluates_argument_error(1, '>', {a: 1}) + end + def test_comparation_of_int_and_str assert_evaluates_argument_error '1', '>', 0 assert_evaluates_argument_error '1', '<', 0