aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/lib/active_support/testing/setup_and_teardown.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activesupport/lib/active_support/testing/setup_and_teardown.rb')
-rw-r--r--activesupport/lib/active_support/testing/setup_and_teardown.rb69
1 files changed, 41 insertions, 28 deletions
diff --git a/activesupport/lib/active_support/testing/setup_and_teardown.rb b/activesupport/lib/active_support/testing/setup_and_teardown.rb
index b59ac79e7b..b738ef334c 100644
--- a/activesupport/lib/active_support/testing/setup_and_teardown.rb
+++ b/activesupport/lib/active_support/testing/setup_and_teardown.rb
@@ -1,12 +1,12 @@
-require 'active_support/callbacks'
-
module ActiveSupport
module Testing
module SetupAndTeardown
def self.included(base)
base.class_eval do
+ extend ClassMethods
+
include ActiveSupport::Callbacks
- define_callbacks :setup, :teardown
+ define_callbacks :test
if defined?(MiniTest::Assertions) && TestCase < MiniTest::Assertions
include ForMiniTest
@@ -16,25 +16,38 @@ module ActiveSupport
end
end
+ module ClassMethods
+ def setup(*args, &block)
+ set_callback(:test, :before, *args, &block)
+ end
+
+ def teardown(*args, &block)
+ set_callback(:test, :after, *args, &block)
+ end
+
+ def wrap(*args, &block)
+ set_callback(:test, :around, *args, &block)
+ end
+ end
+
module ForMiniTest
def run(runner)
result = '.'
begin
- run_callbacks :setup
- result = super
+ run_callbacks :test do
+ begin
+ result = super
+ rescue Exception => e
+ result = runner.puke(self.class, self.name, e)
+ end
+ end
rescue Exception => e
result = runner.puke(self.class, self.name, e)
- ensure
- begin
- run_callbacks :teardown, :enumerator => :reverse_each
- rescue Exception => e
- result = runner.puke(self.class, self.name, e)
- end
end
result
end
end
-
+
module ForClassicTestUnit
# For compatibility with Ruby < 1.8.6
PASSTHROUGH_EXCEPTIONS = Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS rescue [NoMemoryError, SignalException, Interrupt, SystemExit]
@@ -57,27 +70,27 @@ module ActiveSupport
@_result = result
begin
begin
- run_callbacks :setup
- setup
- __send__(@method_name)
- mocha_verify(assertion_counter) if using_mocha
- rescue Mocha::ExpectationError => e
- add_failure(e.message, e.backtrace)
+ run_callbacks :test do
+ begin
+ setup
+ __send__(@method_name)
+ mocha_verify(assertion_counter) if using_mocha
+ rescue Mocha::ExpectationError => e
+ add_failure(e.message, e.backtrace)
+ rescue Test::Unit::AssertionFailedError => e
+ add_failure(e.message, e.backtrace)
+ rescue Exception => e
+ raise if PASSTHROUGH_EXCEPTIONS.include?(e.class)
+ add_error(e)
+ ensure
+ teardown
+ end
+ end
rescue Test::Unit::AssertionFailedError => e
add_failure(e.message, e.backtrace)
rescue Exception => e
raise if PASSTHROUGH_EXCEPTIONS.include?(e.class)
add_error(e)
- ensure
- begin
- teardown
- run_callbacks :teardown, :enumerator => :reverse_each
- rescue Test::Unit::AssertionFailedError => e
- add_failure(e.message, e.backtrace)
- rescue Exception => e
- raise if PASSTHROUGH_EXCEPTIONS.include?(e.class)
- add_error(e)
- end
end
ensure
mocha_teardown if using_mocha