diff options
Diffstat (limited to 'cli/tests/workers_test.ts')
-rw-r--r-- | cli/tests/workers_test.ts | 47 |
1 files changed, 15 insertions, 32 deletions
diff --git a/cli/tests/workers_test.ts b/cli/tests/workers_test.ts index c74680c27..e5b0eaa74 100644 --- a/cli/tests/workers_test.ts +++ b/cli/tests/workers_test.ts @@ -8,29 +8,12 @@ // again moved to `cli/js/` as an unit test file. import { assert, assertEquals } from "../../std/testing/asserts.ts"; - -export interface ResolvableMethods<T> { - resolve: (value: T | PromiseLike<T>) => void; - // deno-lint-ignore no-explicit-any - reject: (reason?: any) => void; -} - -export type Resolvable<T> = Promise<T> & ResolvableMethods<T>; - -export function createResolvable<T = void>(): Resolvable<T> { - let methods: ResolvableMethods<T>; - const promise = new Promise<T>((resolve, reject): void => { - methods = { resolve, reject }; - }); - // TypeScript doesn't know that the Promise callback occurs synchronously - // therefore use of not null assertion (`!`) - return Object.assign(promise, methods!) as Resolvable<T>; -} +import { deferred } from "../../std/async/deferred.ts"; Deno.test({ name: "worker terminate", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const jsWorker = new Worker( new URL("subdir/test_worker.js", import.meta.url).href, @@ -66,7 +49,7 @@ Deno.test({ Deno.test({ name: "worker nested", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const nestedWorker = new Worker( new URL("subdir/nested_worker.js", import.meta.url).href, @@ -87,7 +70,7 @@ Deno.test({ Deno.test({ name: "worker throws when executing", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const throwingWorker = new Worker( new URL("subdir/throwing_worker.js", import.meta.url).href, { type: "module" }, @@ -108,7 +91,7 @@ Deno.test({ Deno.test({ name: "worker globals", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const w = new Worker( new URL("subdir/worker_globals.ts", import.meta.url).href, { type: "module" }, @@ -126,7 +109,7 @@ Deno.test({ Deno.test({ name: "worker fetch API", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const fetchingWorker = new Worker( new URL("subdir/fetching_worker.js", import.meta.url).href, @@ -153,7 +136,7 @@ Deno.test({ Deno.test({ name: "worker terminate busy loop", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const busyWorker = new Worker( new URL("subdir/busy_worker.js", import.meta.url).href, @@ -186,7 +169,7 @@ Deno.test({ fn: async function (): Promise<void> { // See issue for details // https://github.com/denoland/deno/issues/4080 - const promise = createResolvable(); + const promise = deferred(); const racyWorker = new Worker( new URL("subdir/racy_worker.js", import.meta.url).href, @@ -213,8 +196,8 @@ Deno.test({ let messageHandlersCalled = 0; let errorHandlersCalled = 0; - const promise1 = createResolvable(); - const promise2 = createResolvable(); + const promise1 = deferred(); + const promise2 = deferred(); const worker = new Worker( new URL("subdir/event_worker.js", import.meta.url).href, @@ -258,7 +241,7 @@ Deno.test({ Deno.test({ name: "worker scope is event listener", fn: async function (): Promise<void> { - const promise1 = createResolvable(); + const promise1 = deferred(); const worker = new Worker( new URL("subdir/event_worker_scope.js", import.meta.url).href, @@ -286,8 +269,8 @@ Deno.test({ Deno.test({ name: "worker with Deno namespace", fn: async function (): Promise<void> { - const promise = createResolvable(); - const promise2 = createResolvable(); + const promise = deferred(); + const promise2 = deferred(); const regularWorker = new Worker( new URL("subdir/non_deno_worker.js", import.meta.url).href, @@ -320,7 +303,7 @@ Deno.test({ Deno.test({ name: "worker with crypto in scope", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const w = new Worker( new URL("subdir/worker_crypto.js", import.meta.url).href, { type: "module" }, @@ -338,7 +321,7 @@ Deno.test({ Deno.test({ name: "Worker event handler order", fn: async function (): Promise<void> { - const promise = createResolvable(); + const promise = deferred(); const w = new Worker( new URL("subdir/test_worker.ts", import.meta.url).href, { type: "module", name: "tsWorker" }, |