class CI::Reporter::Runner
Public Class Methods
new()
click to toggle source
Calls superclass method
# File lib/ci/reporter/minitest.rb, line 61 def initialize super @report_manager = ReportManager.new("test") end
Public Instance Methods
_run_anything(type)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 66 def _run_anything(type) suites = MiniTest::Unit::TestCase.send "#{type}_suites" return if suites.empty? started_anything type sync = output.respond_to? :"sync=" # stupid emacs old_sync, output.sync = output.sync, true if sync _run_suites(suites, type) output.sync = old_sync if sync finished_anything(type) end
_run_suite(suite, type)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 86 def _run_suite(suite, type) start_suite(suite) header = "#{type}_suite_header" puts send(header, suite) if respond_to? header filter_suite_methods(suite, type).each do |method| _run_test(suite, method) end finish_suite end
_run_suites(suites, type)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 82 def _run_suites(suites, type) suites.map { |suite| _run_suite suite, type } end
_run_test(suite, method)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 99 def _run_test(suite, method) start_case(method) result = run_test(suite, method) @assertion_count += result._assertions @test_count += 1 finish_case end
puke(klass, meth, e)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 110 def puke(klass, meth, e) e = case e when MiniTest::Skip then @skips += 1 fault(e, :skip) return "S" unless @verbose "Skipped:\n#{meth}(#{klass}) [#{location e}]:\n#{e.message}\n" when MiniTest::Assertion then @failures += 1 fault(e, :failure, meth) "Failure:\n#{meth}(#{klass}) [#{location e}]:\n#{e.message}\n" else @errors += 1 fault(e, :error) bt = MiniTest::filter_backtrace(e.backtrace).join "\n " "Error:\n#{meth}(#{klass}):\n#{e.class}: #{e.message}\n #{bt}\n" end @report << e e[0, 1] end
Private Instance Methods
fault(fault, type = nil, meth = nil)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 212 def fault(fault, type = nil, meth = nil) tc = @current_suite.testcases.last if :skip == type tc.skipped = true else tc.failures << Failure.new(fault, type, meth) end end
filter_suite_methods(suite, type)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 161 def filter_suite_methods(suite, type) filter = options[:filter] || '/./' filter = Regexp.new $1 if filter =~ /\/(.*)\// suite.send("#{type}_methods").grep(filter) end
finish_case()
click to toggle source
# File lib/ci/reporter/minitest.rb, line 205 def finish_case tc = @current_suite.testcases.last tc.finish tc.assertions = @assertion_count - @result_assertion_count @result_assertion_count = @assertion_count end
finish_suite()
click to toggle source
# File lib/ci/reporter/minitest.rb, line 190 def finish_suite if @current_suite @current_suite.finish @current_suite.assertions = @assertion_count - @last_assertion_count @last_assertion_count = @assertion_count @report_manager.write_report(@current_suite) end end
finished_anything(type)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 145 def finished_anything(type) t = Time.now - @start puts puts puts "Finished #{type}s in %.6fs, %.4f tests/s, %.4f assertions/s." % [t, @test_count / t, @assertion_count / t] report.each_with_index do |msg, i| puts "\n%3d) %s" % [i + 1, msg] end puts status end
run_test(suite, method)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 168 def run_test(suite, method) inst = suite.new method inst._assertions = 0 print "#{suite}##{method} = " if @verbose @start_time = Time.now result = inst.run self time = Time.now - @start_time print "%.2f s = " % time if @verbose print result puts if @verbose return inst end
start_case(test_name)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 199 def start_case(test_name) tc = CI::Reporter::TestCase.new(test_name) tc.start @current_suite.testcases << tc end
start_suite(suite_name)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 185 def start_suite(suite_name) @current_suite = CI::Reporter::TestSuite.new(suite_name) @current_suite.start end
started_anything(type)
click to toggle source
# File lib/ci/reporter/minitest.rb, line 133 def started_anything(type) @test_count = 0 @assertion_count = 0 @last_assertion_count = 0 @result_assertion_count = 0 @start = Time.now puts puts "# Running #{type}s:" puts end