class Minitest::DocReporter::DocReporter

Attributes

count[RW]
errors[RW]
failures[RW]
io[R]
options[R]
results[RW]
skips[RW]
start_time[RW]
total_time[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/minitest/doc_reporter.rb, line 17
def initialize(options = {})
  @io = io
  @options = options
  self.results = []
  self.errors = 0
  self.skips = 0
  self.count = 0
  self.failures = 0
end

Public Instance Methods

record(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 32
def record(result)
  puts format_header(result)
  puts format_result(result)
  puts

  puts failure_info(result) unless result.passed?

  update_statistics(result)
end
report() click to toggle source
Calls superclass method
# File lib/minitest/doc_reporter.rb, line 43
def report
  super

  aggregate = self.results.group_by { |r| r.failure.class }
  aggregate.default = [] # dumb. group_by should provide this

  self.failures   = aggregate[Assertion].size
  self.errors     = aggregate[UnexpectedError].size
  self.skips      = aggregate[Skip].size

  puts
  puts format_tests_run_count(count, total_time)
  puts statistics
  puts
end
start() click to toggle source
# File lib/minitest/doc_reporter.rb, line 27
def start
  puts
  self.start_time = Time.now
end

Private Instance Methods

failure_info(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 61
def failure_info(result)
  if result.error?
    puts pad(format_error_info(result))
    puts
  elsif result.failure
    result.failure.to_s.each_line {|l| puts pad(l)}
    puts
  end
end
format_backtrace(bt) click to toggle source
# File lib/minitest/doc_reporter.rb, line 98
def format_backtrace(bt)
  output = ""
  bt.each {|l| output << pad(l)}
  output
end
format_divider(divider = '|') click to toggle source
# File lib/minitest/doc_reporter.rb, line 142
def format_divider(divider = '|')
  ANSI.white + ANSI.bold + " #{divider} "
end
format_error_info(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 91
def format_error_info(result)
  e = result.failure.exception
  bt = Minitest.filter_backtrace e.backtrace
  ANSI.bold {e.class.to_s} + "\n" + pad(e.message.to_s) + "\n" + \
      format_backtrace(bt)
end
format_header(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 123
def format_header(result)
  ANSI.bold(result.class)
end
format_result(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 104
def format_result(result)
  output = ""
  name = format_test_description result

  if result.passed?
    output =  ANSI.green {name}
  else
    output = ANSI.red {name}
  end

  pad output
end
format_result_type(type, count, colour) click to toggle source
# File lib/minitest/doc_reporter.rb, line 132
def format_result_type(type, count, colour)
  summary = "#{type}: #{count}"

  if count.zero?
    return ANSI.ansi(summary, :white, :bold)
  else
    return ANSI.ansi(summary, colour, :bold)
  end
end
format_test_description(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 117
def format_test_description(result)
  verb = result.name.split[0].split("_").last
  phrase = result.name.split[1..-1].join " "
  "#{verb} #{phrase}"
end
format_tests_run_count(count, total_time) click to toggle source
# File lib/minitest/doc_reporter.rb, line 127
def format_tests_run_count(count, total_time)
  time = ANSI.bold total_time.to_s
  "#{count} tests run in #{time} seconds."
end
pad(str, amount = 2) click to toggle source

formatters

# File lib/minitest/doc_reporter.rb, line 87
def pad(str, amount = 2)
  " " * amount + str
end
statistics() click to toggle source
# File lib/minitest/doc_reporter.rb, line 76
def statistics
  "#{format_result_type('Errors', errors, :red)} #{format_divider}" + \
    "#{format_result_type('Failures', failures, :red)} #{format_divider}" + \
    "#{format_result_type('Skips', skips, :yellow)}"
end
update_statistics(result) click to toggle source
# File lib/minitest/doc_reporter.rb, line 71
def update_statistics(result)
  self.count += 1
  self.results << result unless result.passed? || result.skipped?
end