From 0f8dc7e69cb602ebc2e7428dd4e3d815fdea60de Mon Sep 17 00:00:00 2001 From: Douwe Maan Date: Fri, 23 May 2014 01:14:13 +0200 Subject: Don't swallow unhandled exceptions. --- test/cases/rescue_test.rb | 9 ++++++++- test/jobs/rescue_job.rb | 13 +++++++++---- 2 files changed, 17 insertions(+), 5 deletions(-) (limited to 'test') diff --git a/test/cases/rescue_test.rb b/test/cases/rescue_test.rb index a91ed01f45..aea8b036d4 100644 --- a/test/cases/rescue_test.rb +++ b/test/cases/rescue_test.rb @@ -11,6 +11,13 @@ class RescueTest < ActiveSupport::TestCase test 'rescue perform exception with retry' do job = RescueJob.new job.execute("david") - assert_equal [ "rescued from StandardError", "performed beautifully" ], $BUFFER + assert_equal [ "rescued from ArgumentError", "performed beautifully" ], $BUFFER + end + + test 'let through unhandled perform exception' do + job = RescueJob.new + assert_raises(RescueJob::OtherError) do + job.execute("other") + end end end diff --git a/test/jobs/rescue_job.rb b/test/jobs/rescue_job.rb index 66b28d768e..acf2b81515 100644 --- a/test/jobs/rescue_job.rb +++ b/test/jobs/rescue_job.rb @@ -1,13 +1,18 @@ class RescueJob < ActiveJob::Base - rescue_from(StandardError) do - $BUFFER << "rescued from StandardError" + class OtherError < StandardError; end + + rescue_from(ArgumentError) do + $BUFFER << "rescued from ArgumentError" arguments[0] = "DIFFERENT!" retry_now end def perform(person = "david") - if person == "david" - raise "Hair too good" + case person + when "david" + raise ArgumentError, "Hair too good" + when "other" + raise OtherError else $BUFFER << "performed beautifully" end -- cgit v1.2.3