# File lib/turn/autorun/minitest0.rb, line 58
  def run_test_suites(filter = /./)
    @test_count, @assertion_count = 0, 0
    old_sync, @@out.sync = @@out.sync, true if @@out.respond_to? :sync=
    TestCase.test_suites.each do |suite|
      test_cases = suite.test_methods.grep(filter)
      if test_cases.size > 0
        @@out.print "\n#{suite}:\n"
      end

      test_cases.each do |test|
        inst = suite.new test
        inst._assertions = 0

        t = Time.now

        @broken = nil

        @@out.print(case run_testcase(inst, self)
                    when :pass
                      @broken = false
                      Turn::Colorize.pass(pad_with_size "PASS")
                    when :error
                      @broken = true
                      Turn::Colorize.error(pad_with_size "ERROR")
                    when :fail
                      @broken = true
                      Turn::Colorize.fail(pad_with_size "FAIL")
                    when :skip
                      @broken = false
                      Turn::Colorize.skip(pad_with_size "SKIP")
                    end)


        @@out.print MiniTest::Unit.use_natural_language_case_names? ? 
          " #{test.gsub("test_", "").gsub(/_/, " ")}" : " #{test}"
        @@out.print " (%.2fs) " % (Time.now - t)

        if @broken
          @@out.puts

          report = @report.last
          @@out.puts pad(report[:message], 10)

          trace = MiniTest::filter_backtrace(report[:exception].backtrace)
          if @trace
            @@out.print trace.map{|t| pad(t, 10) }.join("\n")
          else
            @@out.print pad(trace.first, 10)
          end

          @@out.puts
        end

        @@out.puts
        @test_count += 1
        @assertion_count += inst._assertions
      end
    end
    @@out.sync = old_sync if @@out.respond_to? :sync=
    [@test_count, @assertion_count]
  end