1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
require File.expand_path("#{File.dirname(__FILE__)}/../../spec_helper")
module RR
module Errors
describe RRError do
describe "#backtrace" do
before do
@original_trim_backtrace = RR.trim_backtrace
end
after do
RR.trim_backtrace = @original_trim_backtrace
end
it "does not include the rr library files when trim_backtrace is true" do
RR.trim_backtrace = true
error = nil
begin
obj = Object.new
mock(obj).foobar
RR.verify_double(obj, :foobar)
rescue RRError=> e
error = e
end
backtrace = error.backtrace.join("\n")
backtrace.should_not include("lib/rr")
end
it "includes the rr library files when trim_backtrace is false" do
RR.trim_backtrace = false
error = nil
begin
obj = Object.new
mock(obj).foobar
RR.verify_double(obj, :foobar)
rescue RRError=> e
error = e
end
backtrace = error.backtrace.join("\n")
expect(backtrace).to include("lib/rr")
end
it "returns custom backtrace when backtrace is set" do
error = RRError.new
custom_backtrace = caller
error.backtrace = custom_backtrace
expect(error.backtrace).to eq custom_backtrace
end
it "returns normal backtrace when backtrace is not set" do
error = nil
expected_line = __LINE__ + 2
begin
raise RRError
rescue RRError => e
error = e
end
expect(error.backtrace.first).to include(__FILE__)
expect(error.backtrace.first).to include(expected_line.to_s)
end
end
end
end
end
|