summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-09 05:14:40 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2006-09-09 05:14:40 +0000
commit7d3fc8ff2b6205ebc0123ac6196acf14257a5cf5 (patch)
tree409a44affa0f759fe6fc5a96815384d15dcbf3df /lib
parentd70fc5798ef641a071c9e72d13bd3fe8d35c2974 (diff)
Rescue Exception in Test::Unit::TestCase#run. [ruby-core:08783]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@10897 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib')
-rw-r--r--lib/test/unit/testcase.rb12
1 files changed, 10 insertions, 2 deletions
diff --git a/lib/test/unit/testcase.rb b/lib/test/unit/testcase.rb
index 7524de9997..017cd15b8c 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)
@@ -70,14 +76,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