From 25f41cb52253acc0edc5340838c6c445cc2527d2 Mon Sep 17 00:00:00 2001 From: drbrain Date: Sat, 9 Sep 2006 05:14:40 +0000 Subject: Rescue Exception in Test::Unit::TestCase#run. [ruby-core:08783] git-svn-id: http://svn.ruby-lang.org/repos/ruby/branches/ruby_1_8@10897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/test/unit/testcase.rb | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'lib/test') diff --git a/lib/test/unit/testcase.rb b/lib/test/unit/testcase.rb index b6bb420f9..0b8d235cd 100644 --- a/lib/test/unit/testcase.rb +++ b/lib/test/unit/testcase.rb @@ -28,6 +28,12 @@ module Test STARTED = name + "::STARTED" FINISHED = name + "::FINISHED" + ## + # These exceptions are not caught by #run. + + PASSTHROUGH_EXCEPTIONS = [NoMemoryError, SignalException, Interrupt, + SystemExit] + # Creates a new instance of the fixture for running the # test represented by test_method_name. def initialize(test_method_name) @@ -72,14 +78,16 @@ module Test __send__(@method_name) rescue AssertionFailedError => e add_failure(e.message, e.backtrace) - rescue StandardError, ScriptError + rescue Exception + raise if PASSTHROUGH_EXCEPTIONS.include? $!.class add_error($!) ensure begin teardown rescue AssertionFailedError => e add_failure(e.message, e.backtrace) - rescue StandardError, ScriptError + rescue Exception + raise if PASSTHROUGH_EXCEPTIONS.include? $!.class add_error($!) end end -- cgit