summaryrefslogtreecommitdiff
path: root/cli/tests/workers_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/workers_test.ts')
-rw-r--r--cli/tests/workers_test.ts47
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" },