Skip to content
This repository
Browse code

Make tests for the presence of MiniTest consistent.

There is an inconsistency between the conditional logic in
the definition of ActiveSupport::TestCase and the conditional logic in
ActiveSupport::Testing::SetupAndTeardown [1].

In some circumstances, it's possible for MiniTest to be defined, but
for ActiveSupport::TestCase *not* to have MiniTest::Unit::TestCase or
MiniTest::Assertions in its ancestor chain. e.g. in Ruby 1.8 with the
minitest gem included in the bundle. In this case, the
Test::Unit/MiniTest shim/wrapper is not present and so
Test::Unit::TestCase (and therefore ActiveSupport::TestCase) is
completely independent of MiniTest::Unit::TestCase.

The conditional logic in the definition of ActiveSupport::TestCase does
not take this scenario into account, whereas the logic in
ActiveSupport::Testing::SetupAndTeardown does take it into account.

The changes in this commit are an alternative to the change in [2] which
was reverted in [3].

Similar conditional logic exists in ActiveSupport::Testing::Isolation
[4], ActiveSupport::Testing::Pending [5],
ActiveSupport::Testing::Performance [6], and in their respective tests.
I have not addressed these, because I know less about what's going on
there, but it would be worth bringing them all into line too.

  • Loading branch information...
commit 48f9999fc3377f5e97513319313a70cf953fd617 1 parent 79a98d8
James Mead authored
2  activesupport/lib/active_support/test_case.rb
@@ -10,7 +10,7 @@
10 10
11 11
 module ActiveSupport
12 12
   class TestCase < ::Test::Unit::TestCase
-    if defined? MiniTest
+    if defined?(MiniTest::Assertions) && TestCase < MiniTest::Assertions
14 14
       Assertion = MiniTest::Assertion
15 15
       alias_method :method_name, :name if method_defined? :name
16 16
       alias_method :method_name, :__name__ if method_defined? :__name__

0 notes on commit 48f9999

Please sign in to comment.
Something went wrong with that request. Please try again.