def go
@start_time = Time.now
logger.debug("STARTING")
self.tests.each do |test|
begin
result = test.run
raise result unless test.success?
if test.retried
result.backtrace.each{ |l| logger.info("#{test.name}: #{l}") }
logger.warn("#{test.name}: PASSED")
else
result.backtrace.each{ |l| logger.debug("#{test.name}: #{l}") }
logger.debug("#{test.name}: PASSED")
end
rescue SystemExit => err
err.backtrace.each{ |l| logger.info("#{test.name}: #{l}") }
if ( SystemExit::EX_TEMPFAIL == err.to_i and not test.retried )
logger.warn("#{test.name}: RETRYING (following #{err.to_s})")
retry
end
logger.warn("#{test.name}: FAILED: #{err.to_s}")
rescue RuntimeError => err
error err.to_s
end
end
logger.info("RESULT: #{successful_tests.length}/#{tests.length} passed.")
@finish_time = Time.now
nil
end