14: def run runner
15: trap 'INFO' do
16: time = runner.start_time ? Time.now - runner.start_time : 0
17: warn "%s#%s %.2fs" % [self.class, self.__name__, time]
18: runner.status $stderr
19: end if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
20:
21: assertion_counter = AssertionCounter.new(self)
22: result = ""
23: begin
24: begin
25: @passed = nil
26: self.setup
27: self.__send__ self.__name__
28: mocha_verify(assertion_counter)
29: result = "." unless io?
30: @passed = true
31: rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
32: raise
33: rescue Exception => e
34: @passed = false
35: result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
36: ensure
37: begin
38: self.teardown
39: rescue *::MiniTest::Unit::TestCase::PASSTHROUGH_EXCEPTIONS
40: raise
41: rescue Exception => e
42: result = runner.puke self.class, self.__name__, Mocha::Integration::MiniTest.translate(e)
43: end
44: trap 'INFO', 'DEFAULT' if ::MiniTest::Unit::TestCase::SUPPORTS_INFO_SIGNAL
45: end
46: ensure
47: mocha_teardown
48: end
49: result
50: end