Coder Social home page Coder Social logo

Comments (7)

gabebw avatar gabebw commented on May 18, 2024

Hi,

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?

-- Gabe

from shoulda-matchers.

wr0ngway avatar wr0ngway commented on May 18, 2024

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.

module Shoulda
  module Matchers
    if defined?(Test::Unit::AssertionFailedError)
      AssertionError = Test::Unit::AssertionFailedError
    elsif Gem.ruby_version >= Gem::Version.new("1.9")
      require 'minitest/unit'
      AssertionError = MiniTest::Assertion
    else
      raise "No unit test library available"
    end
  end
end

from shoulda-matchers.

gabebw avatar gabebw commented on May 18, 2024

Ah, I see. Thanks for the explanation. That looks like a lovely fix.

-- Gabe

from shoulda-matchers.

pupeno avatar pupeno commented on May 18, 2024

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)

from shoulda-matchers.

pupeno avatar pupeno commented on May 18, 2024

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

from shoulda-matchers.

gabebw avatar gabebw commented on May 18, 2024

@pupeno - I'd be glad to merge this in if you create a pull.

from shoulda-matchers.

pupeno avatar pupeno commented on May 18, 2024

@gabebw I'm glad you are, here it is: #119 :)

from shoulda-matchers.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.