Any reason for this? It breaks RubyMine when running tests because RM doesn't activate testunit support when minitest is detected.
I'm not familiar with RubyMine - could you explain a little bit more how this breaks, or (even better) what the desired behavior would be?
RM is detecting the presence of minitest, I assume by seeing if the class constant is defined, and when it does, it disables the TestUnit integration. Since assertion_error is requiring minitest/unit, it causes the constant to be defined. Ideally, shoulda should not require a dependency unless it uses it. In assertion_error, its checking for ruby 1.9 to determine if it should use minitest over testunit, which is a flawed assumption (people can and do use testunit with 1.9). It seems dangerous that one could end up with both minitest and testunit loaded, especially since they play in the same namespace.
Perhaps you could test for presence of testunit as the conditional? E.g.
AssertionError = Test::Unit::AssertionFailedError
elsif Gem.ruby_version >= Gem::Version.new("1.9")
AssertionError = MiniTest::Assertion
raise "No unit test library available"
Ah, I see. Thanks for the explanation. That looks like a lovely fix.
I run into this issue which caused our team to waste a lot of time by not being able to run individual tests (test-unit can run individual test with RubyMine, minitest can't) as well as me making the guys at JetBrains to waste time tracking why that was happening when I reported it (http://youtrack.jetbrains.com/issue/RUBY-10602?replyTo=27-343557). I also re-reported the issue here: #118.
Will that patch be included? Do you need a clean pull request to do it? (I can give it a try)
I created a fork with a branch with @wr0ngway's code... so far everything seems to be working fine for me: https://github.com/watu/shoulda-matchers/tree/do_not_load_minitest
@pupeno - I'd be glad to merge this in if you create a pull.
@gabebw I'm glad you are, here it is: #119 :)
Do not force loading minitest when test-unit is available. Closes #88.
Credit goes to Matt Conway (@wr0ngway https://github.com/wr0ngway)
#88: Do not force minitest loading when test-unit is available (resto…
…ring original fix)