describe "wtf?!" do
  let(:tester) do
    pry_tester do
      def last_exception=(exception)
        @pry.last_exception = exception
      end

      def last_exception
        @pry.last_exception
      end
    end
  end

  it "unwinds nested exceptions" do
    if Gem::Version.new(RUBY_VERSION) <= Gem::Version.new('2.0.0')
      skip('Exception#cause is not supported')
    end

    begin
      begin
        begin
          raise 'inner'
        rescue RuntimeError
          raise 'outer'
        end
      end
    rescue RuntimeError => ex
      tester.last_exception = ex
    end

    expect(tester.eval('wtf -v')).to match(/
      Exception:\sRuntimeError:\souter
      .+
      Caused\sby:\sRuntimeError:\sinner
    /xm)
  end
end
