lib/rr/integrations/minitest_4.rb
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