def run runner
trap 'INFO' do
warn '%s#%s %.2fs' % [self.class, self.__name__,
(Time.now - runner.start_time)]
runner.status $stderr
end if SUPPORTS_INFO_SIGNAL
result = '.'
begin
@passed = nil
self.setup
self.__send__ self.__name__
@passed = true
rescue *PASSTHROUGH_EXCEPTIONS
raise
rescue Exception => e
@passed = false
result = runner.puke(self.class, self.__name__, e)
ensure
begin
self.teardown
rescue *PASSTHROUGH_EXCEPTIONS
raise
rescue Exception => e
result = runner.puke(self.class, self.__name__, e)
end
trap 'INFO', 'DEFAULT' if SUPPORTS_INFO_SIGNAL
end
result
end