File: minitest_4.rb

package info (click to toggle)
ruby-rr 3.1.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,424 kB
  • sloc: ruby: 11,405; makefile: 7
file content (80 lines) | stat: -rw-r--r-- 2,021 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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
module RR
  module Integrations
    class MiniTest4
      module Mixin
        def assert_received(subject, &block)
          self.assertions += 1
          block.call(received(subject)).call
        end
      end

      def name
        'MiniTest 4'
      end

      def applies?
        mt_version < 5
      rescue NameError
        false
      end

      def test_case_class
        ::MiniTest::Unit::TestCase
      end

      def assertion_error_class
        ::MiniTest::Assertion
      end

      def version_constant
        ::MiniTest::Unit::VERSION
      end

      def mt_version
        version_constant.split('.')[0].to_i
      end

      def hook
        assertion_error_class = self.assertion_error_class
        test_case_class.class_eval do
          include RR::DSL
          include Mixin

          if defined?(::ActiveSupport::TestCase)
            is_active_support_test_case = lambda do |target|
              target.is_a?(::ActiveSupport::TestCase)
            end
          else
            is_active_support_test_case = lambda do |target|
              false
            end
          end

          unless instance_methods.any? { |method_name| method_name.to_sym == :setup_with_rr }
            alias_method :setup_without_rr, :setup
            define_method(:setup_with_rr) do
              setup_without_rr
              return if is_active_support_test_case.call(self)
              RR.reset
              RR.trim_backtrace = true
              RR.overridden_error_class = assertion_error_class
            end
            alias_method :setup, :setup_with_rr

            alias_method :teardown_without_rr, :teardown
            define_method(:teardown_with_rr) do
              begin
                RR.verify unless is_active_support_test_case.call(self)
              ensure
                teardown_without_rr
              end
            end
            alias_method :teardown, :teardown_with_rr
          end
        end
      end
    end

    RR.register_adapter MiniTest4
  end
end