module Bacon::TestUnitOutput

Overrides the TestUnitOutput to provide colored result output.

Public Instance Methods

handle_requirement(description, disabled = false) { || ... } click to toggle source

Represents the requirements as:

  • .

    successful

  • E

    error

  • F

    failure

  • _

    skipped

After the first failure or error all the other requirements are skipped.

# File lib/pretty_bacon/test_unit_output.rb, line 27
def handle_requirement(description, disabled = false)
  if @skip_the_rest
    indicator = PrettyBacon.color(nil, '_')
  else
    error = yield
    if !error.empty?
      @skip_the_rest = true
      message = error[0..0]
      color = (message == "E" ? :red : :yellow)
      indicator = PrettyBacon.color(color, message)
      spec_message = @last_spec_name
      desc_message = PrettyBacon.color(color, description)
      @failing_rquirement = "#{spec_message}: #{desc_message}"
    elsif disabled
      indicator =  "D"
    else
      indicator = PrettyBacon.color(nil, '.')
    end
  end
  print indicator
  @indicators||=''
  @indicators << indicator
end
handle_specification(name) { || ... } click to toggle source

Represents the specifications as ‘:`.

# File lib/pretty_bacon/test_unit_output.rb, line 9
def handle_specification(name)
  indicator = PrettyBacon.color(nil, ':')
  print indicator
  @indicators||=''
  @indicators << indicator
  @last_spec_name = name
  yield
end
handle_summary() click to toggle source
# File lib/pretty_bacon/test_unit_output.rb, line 51
def handle_summary
  puts "\n\n"
  puts @failing_rquirement

  first_error = ''
  error_count = 0
  ErrorLog.lines.each do |s|
    error_count += 1 if s.include?('Error:') || s.include?('Informative')
    first_error << s if error_count <= 1
  end
  first_error = first_error.gsub(Dir.pwd + '/', '')
  first_error = first_error.gsub(/lib\//, PrettyBacon.color(:yellow, 'lib') + '/')
  first_error = first_error.gsub(/:([0-9]+):/, ':' + PrettyBacon.color(:yellow, '\1') + ':')
  puts "\n#{first_error}" if Backtraces
  unless Counter[:disabled].zero?
    puts PrettyBacon.color(:yellow, "#{Counter[:disabled]} disabled specifications")
  end
  result = "%d specifications (%d requirements), %d failures, %d errors" %
    Counter.values_at(:specifications, :requirements, :failed, :errors)
  if Counter[:failed].zero? && Counter[:errors].zero?
    puts PrettyBacon.color(:green, result)
  else
    puts PrettyBacon.color(:red, result)
  end
end