test/unit/client_test.rb in raygun4ruby-1.3.0 vs test/unit/client_test.rb in raygun4ruby-1.4.0

- old
+ new

@@ -55,10 +55,41 @@ e = NilMessageError.new expected_message = "" assert_equal expected_message, @client.send(:error_details, e)[:message] end + def test_inner_error_details + oe = TestException.new("A test message") + oe.set_backtrace(["/some/folder/some_file.rb:123:in `some_method_name'"]) + + ie = TestException.new("Inner test message") + ie.set_backtrace(["/another/path/foo.rb:1234:in `block (3 levels) run'"]) + + e = nest_exceptions(oe, ie) + + expected_hash = { + className: "ClientTest::TestException", + message: oe.message, + stackTrace: [ + { lineNumber: "123", fileName: "/some/folder/some_file.rb", methodName: "some_method_name" } + ] + } + + # test inner error according with its availability (ruby >= 2.1) + if e.respond_to? :cause + expected_hash[:innerError] = { + className: "ClientTest::TestException", + message: ie.message, + stackTrace: [ + { lineNumber: "1234", fileName: "/another/path/foo.rb", methodName: "block (3 levels) run"} + ] + } + end + + assert_equal expected_hash, @client.send(:error_details, e) + end + def test_client_details expected_hash = { name: Raygun::CLIENT_NAME, version: Raygun::VERSION, clientUrl: Raygun::CLIENT_URL @@ -587,10 +618,25 @@ "/another/path/foo.rb:1234:in `block (3 levels) run'"]) e end + def nest_exceptions(outer_exception, inner_exception) + begin + begin + raise inner_exception.class, inner_exception.message + rescue => e + e.set_backtrace inner_exception.backtrace + raise outer_exception.class, outer_exception.message + end + rescue => nested_exception + nested_exception.set_backtrace outer_exception.backtrace + end + + nested_exception + end + def exception_hash { className: "ClientTest::TestException", message: "A test message", stackTrace: [ @@ -616,7 +662,6 @@ "SERVER_PROTOCOL"=>"HTTP/1.1", "SCRIPT_NAME"=>"", "REMOTE_ADDR"=>"127.0.0.1" } end - end