Sha256: ae0a890eeef21fcd38f18756cc4b516005a8cc5bad63d455d6f99121642111a7

Contents?: true

Size: 1.73 KB

Versions: 5

Compression:

Stored size: 1.73 KB

Contents

require 'ansi'
require 'progressbar'

module MiniTest
  module Reporters
    # Simple reporter designed for RubyMate.
    class RubyMateReporter
      include MiniTest::Reporter

      INFO_PADDING = 2

      def initialize(backtrace_filter = MiniTest::BacktraceFilter.default_filter)
        @backtrace_filter = backtrace_filter
      end

      def before_suites(suites, type)
        puts 'Started'
        puts
      end

      def skip(suite, test, test_runner)
        print 'SKIP'
        print_test_with_time(suite, test)
        puts
        puts
      end

      def failure(suite, test, test_runner)
        print 'FAIL'
        print_test_with_time(suite, test)
        puts
        print_info(test_runner.exception)
        puts
      end

      def error(suite, test, test_runner)
        print 'ERROR'
        print_test_with_time(suite, test)
        puts
        print_info(test_runner.exception)
        puts
      end

      def after_suites(suites, type)
        total_time = Time.now - runner.start_time

        puts
        puts('Finished in %.5fs' % total_time)
        print('%d tests, %d assertions, ' % [runner.test_count, runner.assertion_count])
        print('%d failures, %d errors, ' % [runner.failures, runner.errors])
        print('%d skips' % runner.skips)
        puts
      end

      private

      def print_test_with_time(suite, test)
        total_time = Time.now - runner.test_start_time
        print(" #{suite}##{test} (%.2fs)" % total_time)
      end

      def print_info(e)
        e.message.each_line { |line| puts pad(line) }

        trace = @backtrace_filter.filter(e.backtrace)
        trace.each { |line| puts pad(line) }
      end

      def pad(str)
        ' ' * INFO_PADDING + str
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
minitest-reporters-0.7.1 lib/minitest/reporters/ruby_mate_reporter.rb
minitest-reporters-0.7.0 lib/minitest/reporters/ruby_mate_reporter.rb
minitest-reporters-0.6.0 lib/minitest/reporters/ruby_mate_reporter.rb
minitest-reporters-0.5.1 lib/minitest/reporters/ruby_mate_reporter.rb
minitest-reporters-0.5.0 lib/minitest/reporters/ruby_mate_reporter.rb