From 8e4333fd99bdc71020c4e2d135da8315f94d9763 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 27 Apr 2020 14:51:22 +0200 Subject: BREAKING: remove Deno.runTests() API (#4922) Deno.runTests() interface is not yet good enough to be exposed publicly with stability guarantees. This commit removes public API related to testing: Deno.runTests() and Deno.TestMessage, but keeps them exposed on Deno.internal object so they can be used with "deno test" subcommand. --- cli/js/tests/test_util.ts | 13 +++++++++---- cli/js/tests/unit_test_runner.ts | 20 +++++++++++++------- 2 files changed, 22 insertions(+), 11 deletions(-) (limited to 'cli/js/tests') diff --git a/cli/js/tests/test_util.ts b/cli/js/tests/test_util.ts index fc0b8a390..516834454 100644 --- a/cli/js/tests/test_util.ts +++ b/cli/js/tests/test_util.ts @@ -200,11 +200,14 @@ const encoder = new TextEncoder(); // Replace functions with null, errors with their stack strings, and JSONify. // eslint-disable-next-line @typescript-eslint/no-explicit-any -function serializeTestMessage(message: Deno.TestMessage): string { +function serializeTestMessage(message: any): string { return JSON.stringify({ start: message.start && { ...message.start, - tests: message.start.tests.map((test) => ({ ...test, fn: null })), + tests: message.start.tests.map((test: Deno.TestDefinition) => ({ + ...test, + fn: null, + })), }, testStart: message.testStart && { ...message.testStart, fn: null }, testEnd: message.testEnd && { @@ -213,7 +216,8 @@ function serializeTestMessage(message: Deno.TestMessage): string { }, end: message.end && { ...message.end, - results: message.end.results.map((result) => ({ + // eslint-disable-next-line @typescript-eslint/no-explicit-any + results: message.end.results.map((result: any) => ({ ...result, error: result.error?.stack, })), @@ -223,7 +227,8 @@ function serializeTestMessage(message: Deno.TestMessage): string { export async function reportToConn( conn: Deno.Conn, - message: Deno.TestMessage + // eslint-disable-next-line @typescript-eslint/no-explicit-any + message: any ): Promise { const line = serializeTestMessage(message); const encodedMsg = encoder.encode(line + (message.end == null ? "\n" : "")); diff --git a/cli/js/tests/unit_test_runner.ts b/cli/js/tests/unit_test_runner.ts index 43009c612..7a246cd39 100755 --- a/cli/js/tests/unit_test_runner.ts +++ b/cli/js/tests/unit_test_runner.ts @@ -12,13 +12,17 @@ import { } from "./test_util.ts"; // eslint-disable-next-line @typescript-eslint/no-explicit-any -const reportToConsole = (Deno as any)[Deno.symbols.internal] - .reportToConsole as (message: Deno.TestMessage) => void; +const internalObj = (Deno as any)[Deno.symbols.internal]; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const reportToConsole = internalObj.reportToConsole as (message: any) => void; +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const runTests = internalObj.runTests as (options: any) => Promise; interface PermissionSetTestResult { perms: Permissions; passed: boolean; - endMessage: Deno.TestMessage["end"]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + endMessage: any; permsStr: string; } @@ -66,7 +70,7 @@ async function workerRunnerMain( // Register unit tests that match process permissions await registerUnitTests(); // Execute tests - await Deno.runTests({ + await runTests({ exitOnFail: false, filter, reportToConsole: false, @@ -129,11 +133,13 @@ async function runTestsForPermissionSet( const conn = await listener.accept(); let expectedPassedTests; - let endMessage: Deno.TestMessage["end"]; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + let endMessage: any; try { for await (const line of readLines(conn)) { - const message = JSON.parse(line) as Deno.TestMessage; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const message = JSON.parse(line) as any; reportToConsole(message); if (message.start != null) { expectedPassedTests = message.start.tests.length; @@ -297,7 +303,7 @@ async function main(): Promise { // Running tests matching current process permissions await registerUnitTests(); - await Deno.runTests({ filter }); + await runTests({ filter }); } main(); -- cgit v1.2.3