Sha256: 4ec0cd0fe474ca2633a73904e3fc3ac42c63965265dc9636046cebd0ac8f9af1
Contents?: true
Size: 1.56 KB
Versions: 25
Compression:
Stored size: 1.56 KB
Contents
# frozen_string_literal: true require 'delegate' require 'ci/queue/output_helpers' module Minitest module Queue class FailureFormatter < SimpleDelegator include ::CI::Queue::OutputHelpers def initialize(test) @test = test super end def to_s [ header, body, "\n" ].flatten.compact.join("\n") end 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.error.class.name, output: to_s, } end private attr_reader :test def header "#{red(status)} #{test.klass}##{test.name}" end def status if test.error? 'ERROR' elsif test.failure 'FAIL' else raise ArgumentError, "Couldn't infer test status" end end 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 def relativize(trace_line) trace_line.sub(/\A#{Regexp.escape("#{Dir.pwd}/")}/, '') end end end end
Version data entries
25 entries across 25 versions & 1 rubygems