Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Start ruby debugger if rspec test fails

Often, when a test fails, I spend quite sometime trying to figure out the what caused it to fail. It'd be useful if RSpec could kick off a Ruby debugger when the test fails, so that I can inspect the local variables immediately to drill down on the cause.

The work-around I'm using right now looks something like this:

# withing some test debugger unless some_variable.nil? expect(some_variable).to be_nil 

However, this approach is cumbersome, because I first wait for a test to fail, then add the debugger line, fix the issue and then have to remove the debugger line, whereas I want it work more like gdb which has the ability to kick in when an exception is hit, without requiring to pepper your code base with debugger statements.

Edit: I've tried Plymouth. It hasn't worked reliably enough for me. Also the development history seems to indicate that it isn't a very well supported gem, so I'd rather not rely on it.

Update: I tried out pry-rescue and find it to be neat. However, I use zeus a lot and was wondering if there's a way to make it work with pry-rescue.

like image 399
Vighnesh Avatar asked Apr 30 '13 00:04

Vighnesh


1 Answers

Use pry-rescue, it's the spiritual successor to plymouth:

From the Readme:

If you're using RSpec or respec, you can open a pry session on every test failure using rescue rspec or rescue respec:

$ rescue rspec From: /home/conrad/0/ruby/pry-rescue/examples/example_spec.rb @ line 9 :       6:      7: describe "Float" do      8:   it "should be able to add" do  =>  9:     (0.1 + 0.2).should == 0.3     10:   end     11: end  RSpec::Expectations::ExpectationNotMetError: expected: 0.3      got: 0.30000000000000004 (using ==) [1] pry(main)> 
like image 89
horseyguy Avatar answered Oct 12 '22 09:10

horseyguy