mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Rubinious: setup/teardown override for miniunit
This commit is contained in:
parent
f5cbad21ac
commit
34c51c9e8f
1 changed files with 32 additions and 8 deletions
|
@ -10,19 +10,43 @@ module ActiveSupport
|
|||
end
|
||||
|
||||
def self.included(base)
|
||||
base.send :include, ActiveSupport::Callbacks
|
||||
base.define_callbacks :setup, :teardown
|
||||
base.class_eval do
|
||||
include ActiveSupport::Callbacks
|
||||
define_callbacks :setup, :teardown
|
||||
|
||||
begin
|
||||
require 'mocha'
|
||||
base.alias_method_chain :run, :callbacks_and_mocha
|
||||
rescue LoadError
|
||||
base.alias_method_chain :run, :callbacks
|
||||
if defined?(::Mini)
|
||||
alias_method :run, :run_with_callbacks_and_miniunit
|
||||
else
|
||||
begin
|
||||
require 'mocha'
|
||||
alias_method :run, :run_with_callbacks_and_mocha
|
||||
rescue LoadError
|
||||
alias_method :run, :run_with_callbacks_and_testunit
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def run_with_callbacks_and_miniunit(runner)
|
||||
result = '.'
|
||||
begin
|
||||
run_callbacks :setup
|
||||
result = super
|
||||
rescue Exception => e
|
||||
result = runner.puke(self.class, self.name, e)
|
||||
ensure
|
||||
begin
|
||||
teardown
|
||||
run_callbacks :teardown, :enumerator => :reverse_each
|
||||
rescue Exception => e
|
||||
result = runner.puke(self.class, self.name, e)
|
||||
end
|
||||
end
|
||||
result
|
||||
end
|
||||
|
||||
# This redefinition is unfortunate but test/unit shows us no alternative.
|
||||
def run_with_callbacks(result) #:nodoc:
|
||||
def run_with_callbacks_and_testunit(result) #:nodoc:
|
||||
return if @method_name.to_s == "default_test"
|
||||
|
||||
yield(Test::Unit::TestCase::STARTED, name)
|
||||
|
|
Loading…
Reference in a new issue