From d7e7285fcbd85171fd83b98480bfcb01a0951ae7 Mon Sep 17 00:00:00 2001 From: Maarten van Grootel Date: Mon, 16 Jan 2017 12:26:19 -0500 Subject: [PATCH] Fix leaking error when comparison leads to TypeError --- lib/liquid/condition.rb | 2 +- test/unit/condition_unit_test.rb | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) 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