minitest / minitest-bisect

Hunting down random test failures can be very very difficult, sometimes impossible, but minitest-bisect makes it easy.

Home Page:http://docs.seattlerb.org/minitest-bisect

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Test failures give me "DRb::DRbServerNotFound"

sagotsky opened this issue · comments

Hi. I'm trying to use minitest-bisect as intended, but I can't get it to keep running after it hits a failing test.

I'm running it with

MTB_VERBOSE=2 bundle exec minitest_bisect --seed 6972  test/minitest_bisect_helper.rb test/controllers/admin/fail_test.rb

That first file is me prepending "test" to LOAD_PATH.

The fail test is this:

require "controller_test_helper"

class Admin::FailTest < ActionController::TestCase
  it 'always fails' do
    assert_nil 'not nil'
  end
end

It fails like I want it to, and then I get this error:

MTB_VERBOSE=2 bundle exec minitest_bisect --seed 6972  test/minitest_bisect_helper.rb test/controllers/admin/fail_test.rb

/home/sagotsky/.rbenv/versions/2.1.2/bin/ruby  -e 'require "./test/minitest_bisect_helper.rb" ; require "./test/controllers/admin/fail_test.rb"' -- --seed 6972 --server 29646

reproducing...Resque::Helpers will be gone with no replacement in Resque 2.0.0.
Resque::Helpers will be gone with no replacement in Resque 2.0.0.
Started with run options --seed 6972 --server 29646

 FAIL["test_0001_always fails", Admin::FailTest, 2017-03-24 11:11:52 -0400]
 test_0001_always fails#Admin::FailTest (1490368312.70s)
        Expected "not nil" to be nil.
        test/controllers/admin/fail_test.rb:7:in `block in <class:FailTest>'

  1/1: [===============================================================================================================================================================================================================================================] 100% Time: 00:00:00, Time: 00:00:00
/home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1687:in `current_server': DRb::DRbServerNotFound (DRb::DRbConnError)
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1756:in `to_id'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1071:in `initialize'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:647:in `new'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:647:in `make_proxy'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:564:in `rescue in dump'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:561:in `dump'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:608:in `block in send_request'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:607:in `each'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:607:in `send_request'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:921:in `send_request'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1221:in `send_message'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1110:in `block (2 levels) in method_missing'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1197:in `open'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1109:in `block in method_missing'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1128:in `with_friend'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/2.1.0/drb/drb.rb:1108:in `method_missing'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-server-1.0.4/lib/minitest/server_plugin.rb:37:in `record'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:674:in `block in record'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:673:in `each'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:673:in `record'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:323:in `run_one_method'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:310:in `block (2 levels) in run'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:309:in `each'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:309:in `block in run'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:349:in `on_signal'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:336:in `with_info_handler'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:308:in `run'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:158:in `block in __run'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:158:in `map'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:158:in `__run'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:135:in `run'
        from /home/sagotsky/.rbenv/versions/2.1.2/lib/ruby/gems/2.1.0/gems/minitest-5.10.1/lib/minitest.rb:62:in `block in autorun'
 in 13.44 sec
Reproduction run passed? Aborting.
Try running with MTB_VERBOSE=2 to verify.

I'm not sure how to proceed at this point.

I can't reproduce this problem as described.

I made a simple project that is roughly equivalent to your description above. I subclassed Minitest::Test directly. I can see the failure like so:

% minitest test/minitest_bisect_helper.rb ./test/fail_test.rb
Run options: --seed 34058

# Running:

F

Finished in 0.000817s, 1223.9902 runs/s, 1223.9902 assertions/s.

  1) Failure:
FailTest#test_failure [/Users/ryan/Work/p4/zss/src/minitest-bisect/dev/demo/test/fail_test.rb:7]:
Expected "not nil" to be nil.

1 runs, 1 assertions, 1 failures, 0 errors, 0 skips

as such, switching from minitest to minitest_bisect:

% minitest_bisect --seed 123 test/minitest_bisect_helper.rb ./test/fail_test.rb
reproducing... in 0.05 sec
Reproduction run passed? Aborting.
Try running with MTB_VERBOSE=2 to verify.

If I switch this to ActiveSupport::TestCase I get the same result...

TY for getting back to me so quickly.

Where does that minitest executable come from? We've been running our tests with rake or ruby -Itest.

@sagotsky gem install minitest-sprint

@zenspider They run normally with minitest, failures and all. Any hints at what I should look into for debugging the DRbServer thing?

Can you give me a code sample that reproduces (preferably without 14 dependencies into the rat's nest that is ActiveSupport and friends?) with a normal ruby command?

Anything?

Sorry I've taken so long to get back to this. Let's just close it. I'll reopen again if needed.

Finally got it working. It was a path thing after all. Putting minitest-bisect in my Gemfile and running it with -Itest got it running.

I probably would have sorted this out quicker if a help flag told me I could use -I and it would do the right thing.