File: verbose_backtrace.rb

package info (click to toggle)
ruby-maxitest 7.1.1-2
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 444 kB
  • sloc: ruby: 1,339; makefile: 7
file content (37 lines) | stat: -rw-r--r-- 1,030 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# frozen_string_literal: true
module Maxitest
  module VerboseBacktrace
    class NullFilter
      def self.filter(backtrace)
        backtrace
      end
    end

    # when printing messages print more if verbose was enabled
    module Assertion
      def message
        if Maxitest::VerboseBacktrace.enabled
          "#{self.class}: #{super}\n    #{backtrace.join "\n    "}"
        else
          super
        end
      end
    end

    module MinitestPlugin
      def self.minitest_plugin_init(options)
        return unless options[:verbose]
        Maxitest::VerboseBacktrace.enabled = true
        Minitest.backtrace_filter = Maxitest::VerboseBacktrace::NullFilter
        # rails has --backtrace which disables rails own backtrace cleaner, but not minitests
        Rails.backtrace_cleaner.remove_silencers! if defined?(Rails) && Rails.respond_to?(:backtrace_cleaner)
      end
    end

    class << self
      attr_accessor :enabled
    end
  end
end

Minitest::Assertion.include Maxitest::VerboseBacktrace::Assertion