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