From c582023321c97d3373d013a3842b8fb0e7ce5f3c Mon Sep 17 00:00:00 2001 From: Nick Pearson Date: Wed, 28 Oct 2015 14:15:09 -0500 Subject: [PATCH] Keep original stack trace in Liquid::ArgumentError --- lib/liquid/strainer.rb | 2 +- test/unit/strainer_unit_test.rb | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/liquid/strainer.rb b/lib/liquid/strainer.rb index c9bd1eb..a902825 100644 --- a/lib/liquid/strainer.rb +++ b/lib/liquid/strainer.rb @@ -52,7 +52,7 @@ module Liquid args.first end rescue ::ArgumentError => e - raise Liquid::ArgumentError.new(e.message) + raise Liquid::ArgumentError, e.message, e.backtrace end end end diff --git a/test/unit/strainer_unit_test.rb b/test/unit/strainer_unit_test.rb index ef7ac08..2048a39 100644 --- a/test/unit/strainer_unit_test.rb +++ b/test/unit/strainer_unit_test.rb @@ -29,6 +29,18 @@ class StrainerUnitTest < Minitest::Test end end + def test_stainer_argument_error_contains_backtrace + strainer = Strainer.create(nil) + begin + strainer.invoke("public_filter", 1) + rescue Liquid::ArgumentError => e + assert_match( + /\ALiquid error: wrong number of arguments \((1 for 0|given 1, expected 0)\)\z/, + e.message) + assert_equal e.backtrace[0].split(':')[0], __FILE__ + end + end + def test_strainer_only_invokes_public_filter_methods strainer = Strainer.create(nil) assert_equal false, strainer.class.invokable?('__test__')