class Minitest::Queue::FailureFormatter

Attributes

test[R]

Public Class Methods

new(test) click to toggle source
Calls superclass method
# File lib/minitest/queue/failure_formatter.rb, line 10
def initialize(test)
  @test = test
  super
end

Public Instance Methods

to_h() click to toggle source
# File lib/minitest/queue/failure_formatter.rb, line 23
def to_h
  test_file, test_line = test.source_location
  {
    test_file: test_file,
    test_line: test_line,
    test_and_module_name: "#{test.klass}##{test.name}",
    test_name: test.name,
    test_suite: test.klass,
    error_class: test.failure.exception.class.name,
    output: to_s,
  }
end
to_s() click to toggle source
# File lib/minitest/queue/failure_formatter.rb, line 15
def to_s
  [
    header,
    body,
    "\n"
  ].flatten.compact.join("\n")
end

Private Instance Methods

body() click to toggle source
# File lib/minitest/queue/failure_formatter.rb, line 54
def body
  error = test.failure
  message = if error.is_a?(MiniTest::UnexpectedError)
    "#{error.exception.class}: #{error.exception.message}"
  else
    error.exception.message
  end

  backtrace = Minitest.filter_backtrace(error.backtrace).map { |line| '    ' + relativize(line) }
  [yellow(message), *backtrace].join("\n")
end
header() click to toggle source
# File lib/minitest/queue/failure_formatter.rb, line 40
def header
  "#{red(status)} #{test.klass}##{test.name}"
end
relativize(trace_line) click to toggle source
# File lib/minitest/queue/failure_formatter.rb, line 66
def relativize(trace_line)
  trace_line.sub(/\A#{Regexp.escape("#{Dir.pwd}/")}/, '')
end
status() click to toggle source
# File lib/minitest/queue/failure_formatter.rb, line 44
def status
  if test.error?
    'ERROR'
  elsif test.failure
    'FAIL'
  else
    raise ArgumentError, "Couldn't infer test status"
  end
end