def run_suite
Unit.run = true
result = create_result
result_listener = result.add_listener(TestResult::CHANGED) do |*args|
notify_listeners(TestResult::CHANGED, *args)
end
fault_listener = result.add_listener(TestResult::FAULT) do |*args|
notify_listeners(TestResult::FAULT, *args)
end
start_time = Time.now
begin
notify_listeners(RESET, @suite.size)
notify_listeners(STARTED, result)
@suite.run(result) do |channel, value|
notify_listeners(channel, value)
end
ensure
elapsed_time = Time.now - start_time
result.remove_listener(TestResult::FAULT, fault_listener)
result.remove_listener(TestResult::CHANGED, result_listener)
notify_listeners(FINISHED, elapsed_time)
end
result
end