aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support
diff options
context:
space:
mode:
authorJames Mead <james@floehopper.org>2012-05-28 22:44:28 +0100
committerJames Mead <james@floehopper.org>2012-05-28 22:44:28 +0100
commitb057fab6383e5dd9f376036ce10fa908c0e185cb (patch)
tree52600478f6142384ecf28350300fcc8cf395f3d3 /activesupport/lib/active_support
parentf5e26bcb1a9a44b763d4d9ff117705312d1c650f (diff)
downloadrails-b057fab6383e5dd9f376036ce10fa908c0e185cb.tar.gz
rails-b057fab6383e5dd9f376036ce10fa908c0e185cb.tar.bz2
rails-b057fab6383e5dd9f376036ce10fa908c0e185cb.zip
Exceptions like Interrupt should not be rescued.
Neither Test::Unit nor MiniTest rescue exceptions like Interrupt or NoMemoryError, but ActiveSupport::Testing::SetupAndTeardown#run which overrides MiniTest::Unit::TestCase#run rescues them. Rescuing an Interrupt exception is annoying, because it means when you are running a lot of tests e.g. when running one of the rake test tasks, you cannot break out using ctrl-C. Rescuing exceptions like NoMemoryError is foolish, because the most sensible thing to happen is for the process to terminate as soon as possible. This solution probably needs some finessing e.g. I'm not clear whether the assumption is that only MiniTest is supported. Also early versions of MiniTest did not have this behaviour. However, hopefully it's a start. Integrating with Test::Unit & MiniTest has always been a pain. It would be great if both of them provided sensible extension points for the kind of things that both Rails and Mocha want to do.
Diffstat (limited to 'activesupport/lib/active_support')
-rw-r--r--activesupport/lib/active_support/testing/setup_and_teardown.rb4
1 files changed, 4 insertions, 0 deletions
diff --git a/activesupport/lib/active_support/testing/setup_and_teardown.rb b/activesupport/lib/active_support/testing/setup_and_teardown.rb
index 772c7b4209..c6ae6bafa5 100644
--- a/activesupport/lib/active_support/testing/setup_and_teardown.rb
+++ b/activesupport/lib/active_support/testing/setup_and_teardown.rb
@@ -28,11 +28,15 @@ module ActiveSupport
run_callbacks :setup do
result = super
end
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
+ raise
rescue Exception => e
result = runner.puke(self.class, method_name, e)
ensure
begin
run_callbacks :teardown
+ rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
+ raise
rescue Exception => e
result = runner.puke(self.class, method_name, e)
end