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

Version Path
ci-queue-0.62.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.61.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.60.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.59.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.58.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.57.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.56.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.55.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.52.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.51.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.50.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.49.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.48.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.47.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.46.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.45.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.44.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.43.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.42.0 lib/minitest/queue/failure_formatter.rb
ci-queue-0.41.0 lib/minitest/queue/failure_formatter.rb