Module: ActiveSupport::Testing::SetupAndTeardown
- Included in:
- Test::Unit::TestCase
- Defined in:
- lib/active_support/testing/setup_and_teardown.rb
Constant Summary collapse
- PASSTHROUGH_EXCEPTIONS =
For compatibility with Ruby < 1.8.6
if defined?(Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS) Test::Unit::TestCase::PASSTHROUGH_EXCEPTIONS else [NoMemoryError, SignalException, Interrupt, SystemExit] end
Class Method Summary collapse
Instance Method Summary collapse
- #run_with_callbacks_and_miniunit(runner) ⇒ Object
-
#run_with_callbacks_and_mocha(result) {|Test::Unit::TestCase::STARTED, name| ... } ⇒ Object
Doubly unfortunate: mocha does the same so we have to hax their hax.
-
#run_with_callbacks_and_testunit(result) {|Test::Unit::TestCase::STARTED, name| ... } ⇒ Object
This redefinition is unfortunate but test/unit shows us no alternative.
Class Method Details
.included(base) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
# File 'lib/active_support/testing/setup_and_teardown.rb', line 12 def self.included(base) base.class_eval do include ActiveSupport::Callbacks define_callbacks :setup, :teardown if defined?(::Mini) undef_method :run alias_method :run, :run_with_callbacks_and_miniunit else begin require 'mocha' undef_method :run alias_method :run, :run_with_callbacks_and_mocha rescue LoadError undef_method :run alias_method :run, :run_with_callbacks_and_testunit end end end end |
Instance Method Details
#run_with_callbacks_and_miniunit(runner) ⇒ Object
33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/active_support/testing/setup_and_teardown.rb', line 33 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 |
#run_with_callbacks_and_mocha(result) {|Test::Unit::TestCase::STARTED, name| ... } ⇒ Object
Doubly unfortunate: mocha does the same so we have to hax their hax.
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 |
# File 'lib/active_support/testing/setup_and_teardown.rb', line 84 def run_with_callbacks_and_mocha(result) return if @method_name.to_s == "default_test" yield(Test::Unit::TestCase::STARTED, name) @_result = result begin mocha_setup begin run_callbacks :setup setup __send__(@method_name) mocha_verify { add_assertion } rescue Mocha::ExpectationError => e add_failure(e., e.backtrace) rescue Test::Unit::AssertionFailedError => e add_failure(e., e.backtrace) rescue StandardError, ScriptError add_error($!) ensure begin teardown run_callbacks :teardown, :enumerator => :reverse_each rescue Test::Unit::AssertionFailedError => e add_failure(e., e.backtrace) rescue StandardError, ScriptError add_error($!) end end ensure mocha_teardown end result.add_run yield(Test::Unit::TestCase::FINISHED, name) end |
#run_with_callbacks_and_testunit(result) {|Test::Unit::TestCase::STARTED, name| ... } ⇒ Object
This redefinition is unfortunate but test/unit shows us no alternative.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/active_support/testing/setup_and_teardown.rb', line 52 def run_with_callbacks_and_testunit(result) #:nodoc: return if @method_name.to_s == "default_test" yield(Test::Unit::TestCase::STARTED, name) @_result = result begin run_callbacks :setup setup __send__(@method_name) rescue Test::Unit::AssertionFailedError => e add_failure(e., e.backtrace) rescue *PASSTHROUGH_EXCEPTIONS raise rescue Exception add_error($!) ensure begin teardown run_callbacks :teardown, :enumerator => :reverse_each rescue Test::Unit::AssertionFailedError => e add_failure(e., e.backtrace) rescue *PASSTHROUGH_EXCEPTIONS raise rescue Exception add_error($!) end end result.add_run yield(Test::Unit::TestCase::FINISHED, name) end |