From 3b853daa1a9f1135807eda9db7c6ebc9e9942ad1 Mon Sep 17 00:00:00 2001 From: BrennanConroy Date: Thu, 16 Aug 2018 10:56:08 -0700 Subject: [PATCH] Log unhandled exceptions to help see errors in tests (#2815) --- clients/ts/signalr/tests/AbortSignal.test.ts | 3 +++ clients/ts/signalr/tests/HttpClient.test.ts | 3 +++ clients/ts/signalr/tests/HttpConnection.test.ts | 4 +++- clients/ts/signalr/tests/HubConnection.test.ts | 4 +++- clients/ts/signalr/tests/HubConnectionBuilder.test.ts | 4 +++- clients/ts/signalr/tests/JsonHubProtocol.test.ts | 3 +++ clients/ts/signalr/tests/LongPollingTransport.test.ts | 4 +++- .../ts/signalr/tests/ServerSentEventsTransport.test.ts | 3 +++ clients/ts/signalr/tests/TextMessageFormat.test.ts | 3 +++ clients/ts/signalr/tests/Utils.ts | 10 ++++++++++ clients/ts/signalr/tests/WebSocketTransport.test.ts | 3 +++ 11 files changed, 40 insertions(+), 4 deletions(-) diff --git a/clients/ts/signalr/tests/AbortSignal.test.ts b/clients/ts/signalr/tests/AbortSignal.test.ts index c51d4407a5..aaef3849dc 100644 --- a/clients/ts/signalr/tests/AbortSignal.test.ts +++ b/clients/ts/signalr/tests/AbortSignal.test.ts @@ -2,6 +2,9 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. import { AbortController } from "../src/AbortController"; +import { registerUnhandledRejectionHandler } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("AbortSignal", () => { describe("aborted", () => { diff --git a/clients/ts/signalr/tests/HttpClient.test.ts b/clients/ts/signalr/tests/HttpClient.test.ts index 79248c02d3..f7a3b71034 100644 --- a/clients/ts/signalr/tests/HttpClient.test.ts +++ b/clients/ts/signalr/tests/HttpClient.test.ts @@ -3,6 +3,9 @@ import { HttpRequest } from "../src/HttpClient"; import { TestHttpClient } from "./TestHttpClient"; +import { registerUnhandledRejectionHandler } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("HttpClient", () => { describe("get", () => { diff --git a/clients/ts/signalr/tests/HttpConnection.test.ts b/clients/ts/signalr/tests/HttpConnection.test.ts index 0ff5a6d687..a3c635c983 100644 --- a/clients/ts/signalr/tests/HttpConnection.test.ts +++ b/clients/ts/signalr/tests/HttpConnection.test.ts @@ -12,7 +12,7 @@ import { EventSourceConstructor, WebSocketConstructor } from "../src/Polyfills"; import { eachEndpointUrl, eachTransport, VerifyLogger } from "./Common"; import { TestHttpClient } from "./TestHttpClient"; -import { PromiseSource } from "./Utils"; +import { PromiseSource, registerUnhandledRejectionHandler } from "./Utils"; const commonOptions: IHttpConnectionOptions = { logger: NullLogger.instance, @@ -28,6 +28,8 @@ const defaultNegotiateResponse: INegotiateResponse = { connectionId: defaultConnectionId, }; +registerUnhandledRejectionHandler(); + describe("HttpConnection", () => { it("cannot be created with relative url if document object is not present", () => { expect(() => new HttpConnection("/test", commonOptions)) diff --git a/clients/ts/signalr/tests/HubConnection.test.ts b/clients/ts/signalr/tests/HubConnection.test.ts index 9910c621c4..cbd0a5fddd 100644 --- a/clients/ts/signalr/tests/HubConnection.test.ts +++ b/clients/ts/signalr/tests/HubConnection.test.ts @@ -12,12 +12,14 @@ import { IStreamSubscriber } from "../src/Stream"; import { TextMessageFormat } from "../src/TextMessageFormat"; import { VerifyLogger } from "./Common"; -import { delay, PromiseSource } from "./Utils"; +import { delay, PromiseSource, registerUnhandledRejectionHandler } from "./Utils"; function createHubConnection(connection: IConnection, logger?: ILogger | null, protocol?: IHubProtocol | null) { return HubConnection.create(connection, logger || NullLogger.instance, protocol || new JsonHubProtocol()); } +registerUnhandledRejectionHandler(); + describe("HubConnection", () => { describe("start", () => { diff --git a/clients/ts/signalr/tests/HubConnectionBuilder.test.ts b/clients/ts/signalr/tests/HubConnectionBuilder.test.ts index 3149fec14f..293c896a54 100644 --- a/clients/ts/signalr/tests/HubConnectionBuilder.test.ts +++ b/clients/ts/signalr/tests/HubConnectionBuilder.test.ts @@ -12,7 +12,7 @@ import { NullLogger } from "../src/Loggers"; import { VerifyLogger } from "./Common"; import { TestHttpClient } from "./TestHttpClient"; -import { PromiseSource } from "./Utils"; +import { PromiseSource, registerUnhandledRejectionHandler } from "./Utils"; const longPollingNegotiateResponse = { availableTransports: [ @@ -25,6 +25,8 @@ const commonHttpOptions: IHttpConnectionOptions = { logMessageContent: true, }; +registerUnhandledRejectionHandler(); + describe("HubConnectionBuilder", () => { eachMissingValue((val, name) => { it(`configureLogging throws if logger is ${name}`, () => { diff --git a/clients/ts/signalr/tests/JsonHubProtocol.test.ts b/clients/ts/signalr/tests/JsonHubProtocol.test.ts index 602fec2ddf..2c3dc16828 100644 --- a/clients/ts/signalr/tests/JsonHubProtocol.test.ts +++ b/clients/ts/signalr/tests/JsonHubProtocol.test.ts @@ -5,6 +5,9 @@ import { CompletionMessage, InvocationMessage, MessageType, StreamItemMessage } import { JsonHubProtocol } from "../src/JsonHubProtocol"; import { TextMessageFormat } from "../src/TextMessageFormat"; import { VerifyLogger } from "./Common"; +import { registerUnhandledRejectionHandler } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("JsonHubProtocol", () => { it("can write/read non-blocking Invocation message", async () => { diff --git a/clients/ts/signalr/tests/LongPollingTransport.test.ts b/clients/ts/signalr/tests/LongPollingTransport.test.ts index 0e25b7502d..2e3dc670e4 100644 --- a/clients/ts/signalr/tests/LongPollingTransport.test.ts +++ b/clients/ts/signalr/tests/LongPollingTransport.test.ts @@ -7,7 +7,9 @@ import { LongPollingTransport } from "../src/LongPollingTransport"; import { VerifyLogger } from "./Common"; import { TestHttpClient } from "./TestHttpClient"; -import { PromiseSource, SyncPoint } from "./Utils"; +import { PromiseSource, registerUnhandledRejectionHandler, SyncPoint } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("LongPollingTransport", () => { it("shuts down polling by aborting in-progress request", async () => { diff --git a/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts b/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts index 558f76a600..0f017adace 100644 --- a/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts +++ b/clients/ts/signalr/tests/ServerSentEventsTransport.test.ts @@ -9,6 +9,9 @@ import { ServerSentEventsTransport } from "../src/ServerSentEventsTransport"; import { VerifyLogger } from "./Common"; import { TestEventSource, TestMessageEvent } from "./TestEventSource"; import { TestHttpClient } from "./TestHttpClient"; +import { registerUnhandledRejectionHandler } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("ServerSentEventsTransport", () => { it("does not allow non-text formats", async () => { diff --git a/clients/ts/signalr/tests/TextMessageFormat.test.ts b/clients/ts/signalr/tests/TextMessageFormat.test.ts index fda25fb383..0ddd32000b 100644 --- a/clients/ts/signalr/tests/TextMessageFormat.test.ts +++ b/clients/ts/signalr/tests/TextMessageFormat.test.ts @@ -2,6 +2,9 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. import { TextMessageFormat } from "../src/TextMessageFormat"; +import { registerUnhandledRejectionHandler } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("TextMessageFormat", () => { ([ diff --git a/clients/ts/signalr/tests/Utils.ts b/clients/ts/signalr/tests/Utils.ts index df132a74e3..a60dfa269b 100644 --- a/clients/ts/signalr/tests/Utils.ts +++ b/clients/ts/signalr/tests/Utils.ts @@ -3,6 +3,16 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000; +export function registerUnhandledRejectionHandler(): void { + process.on("unhandledRejection", (error) => { + if (error && error.stack) { + console.error(error.stack); + } else { + console.error(error); + } + }); +} + export function delay(durationInMilliseconds: number): Promise { const source = new PromiseSource(); setTimeout(() => source.resolve(), durationInMilliseconds); diff --git a/clients/ts/signalr/tests/WebSocketTransport.test.ts b/clients/ts/signalr/tests/WebSocketTransport.test.ts index 107cf88db2..00b5bbfb27 100644 --- a/clients/ts/signalr/tests/WebSocketTransport.test.ts +++ b/clients/ts/signalr/tests/WebSocketTransport.test.ts @@ -7,6 +7,9 @@ import { WebSocketTransport } from "../src/WebSocketTransport"; import { VerifyLogger } from "./Common"; import { TestMessageEvent } from "./TestEventSource"; import { TestCloseEvent, TestErrorEvent, TestEvent, TestWebSocket } from "./TestWebSocket"; +import { registerUnhandledRejectionHandler } from "./Utils"; + +registerUnhandledRejectionHandler(); describe("WebSocketTransport", () => { it("sets websocket binarytype to arraybuffer on Binary transferformat", async () => {