Changeset 8664 for trunk/activesupport/lib/active_support/testing
- Timestamp:
- 01/19/08 02:44:45 (8 months ago)
- Files:
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activesupport/lib/active_support/testing/setup_and_teardown.rb
r8570 r8664 3 3 module SetupAndTeardown 4 4 def self.included(base) 5 base.extend ClassMethods 5 base.send :include, ActiveSupport::Callbacks 6 base.define_callbacks :setup, :teardown 6 7 7 8 begin … … 10 11 rescue LoadError 11 12 base.alias_method_chain :run, :callbacks 12 end13 end14 15 module ClassMethods16 def setup(*method_names, &block)17 method_names << block if block_given?18 (@setup_callbacks ||= []).concat method_names19 end20 21 def teardown(*method_names, &block)22 method_names << block if block_given?23 (@teardown_callbacks ||= []).concat method_names24 end25 26 def setup_callback_chain27 @setup_callbacks ||= []28 29 if superclass.respond_to?(:setup_callback_chain)30 superclass.setup_callback_chain + @setup_callbacks31 else32 @setup_callbacks33 end34 end35 36 def teardown_callback_chain37 @teardown_callbacks ||= []38 39 if superclass.respond_to?(:teardown_callback_chain)40 superclass.teardown_callback_chain + @teardown_callbacks41 else42 @teardown_callbacks43 end44 13 end 45 14 end … … 64 33 begin 65 34 teardown 66 run_callbacks :teardown, : reverse_each35 run_callbacks :teardown, :enumerator => :reverse_each 67 36 rescue Test::Unit::AssertionFailedError => e 68 37 add_failure(e.message, e.backtrace) … … 99 68 begin 100 69 teardown 101 run_callbacks :teardown, : reverse_each70 run_callbacks :teardown, :enumerator => :reverse_each 102 71 rescue Test::Unit::AssertionFailedError => e 103 72 add_failure(e.message, e.backtrace) … … 112 81 yield(Test::Unit::TestCase::FINISHED, name) 113 82 end 114 115 protected116 def run_callbacks(kind, enumerator = :each)117 self.class.send("#{kind}_callback_chain").send(enumerator) do |callback|118 case callback119 when Proc; callback.call(self)120 when String, Symbol; send!(callback)121 else raise ArgumentError, "Unrecognized callback #{callback.inspect}"122 end123 end124 end125 83 end 126 84 end