# File lib/test/unit/ui/testrunnermediator.rb, line 32
        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