summaryrefslogtreecommitdiff
path: root/cli/js/tests/unit_test_runner.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/tests/unit_test_runner.ts')
-rwxr-xr-xcli/js/tests/unit_test_runner.ts53
1 files changed, 34 insertions, 19 deletions
diff --git a/cli/js/tests/unit_test_runner.ts b/cli/js/tests/unit_test_runner.ts
index 0857772c7..dc0ad3e19 100755
--- a/cli/js/tests/unit_test_runner.ts
+++ b/cli/js/tests/unit_test_runner.ts
@@ -127,31 +127,46 @@ async function runTestsForPermissionSet(
// Wait for worker subprocess to go online
const conn = await listener.accept();
+ let err: Error | undefined = undefined;
let expectedPassedTests;
let endEvent;
- for await (const line of readLines(conn)) {
- const msg = JSON.parse(line);
-
- if (msg.kind === Deno.TestEvent.Start) {
- expectedPassedTests = msg.tests;
- await reporter.start(msg);
- continue;
- } else if (msg.kind === Deno.TestEvent.TestStart) {
- await reporter.testStart(msg);
- continue;
- } else if (msg.kind === Deno.TestEvent.TestEnd) {
- await reporter.testEnd(msg);
- continue;
- } else {
- endEvent = msg;
- await reporter.end(msg);
- break;
+ try {
+ for await (const line of readLines(conn)) {
+ const msg = JSON.parse(line);
+
+ if (msg.kind === Deno.TestEvent.Start) {
+ expectedPassedTests = msg.tests;
+ await reporter.start(msg);
+ continue;
+ } else if (msg.kind === Deno.TestEvent.TestStart) {
+ await reporter.testStart(msg);
+ continue;
+ } else if (msg.kind === Deno.TestEvent.TestEnd) {
+ await reporter.testEnd(msg);
+ continue;
+ } else {
+ endEvent = msg;
+ await reporter.end(msg);
+ break;
+ }
}
+ } catch (e) {
+ err = e;
+ } finally {
+ // Close socket to worker, it should shutdown gracefully.
+ conn.close();
}
- // Close socket to worker, it should shutdown gracefully.
- conn.close();
+ if (err) {
+ if (err instanceof Deno.errors.ConnectionReset) {
+ if (!endEvent) {
+ throw err;
+ }
+ } else {
+ throw err;
+ }
+ }
if (typeof expectedPassedTests === "undefined") {
throw new Error("Worker runner didn't report start");