Phlip wrote:
The question is why did RSpec throw away the backtrace? Am I the first person in history to hit a programming error inside RSpec??

Nope, but this probably isn't one of them.

I said it wrong. The complete venting goes "Am I the first person in history to use RSpec, and then hit a programming error?" The comma , makes the phrases non-restrictive.

And I don't give a darn if RSpec itself had a programming error, so long as it traced it!

I don't think it rewrites the callstack in anyway. More than likely the object you are calling the method on is nil. If you can't figure it out just by looking at the spec, I'd suggest running the debugger right before the line the line that fails. Insert this into your spec:

it "...." do
 ...
 require 'rubygems'; require 'ruby-debug'; debugger
  ... # the failing line
end

Run your specs, and you should be confronted by the debugger - this will allow you live introspection of the process and results right before they happen. ( search for a ruby-debug guide out there on the interwebs if you've never used it before).

If you are correct, you should be able to show (via the debugger, by stepping into any relevant functions) that the stack is being rewritten.


Can you post your spec and any relevant code?

Nope. Try 1/0 inside a sub-method - you won't get a stack trace to it, right?
Usually it does:

>> def foo
>>   1/0
>>   end
=> nil
>> def bar
>>   foo
>>   end
=> nil
>> bar
ZeroDivisionError: divided by 0
   from (irb):43:in `/'
   from (irb):43:in `foo'
   from (irb):46:in `bar'
   from (irb):48


Hope that helps,

Scott

_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to