summaryrefslogtreecommitdiff
path: root/cli/js/workers_test.ts
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-03-03 18:22:53 +0100
committerGitHub <noreply@github.com>2020-03-03 18:22:53 +0100
commitee452ad883c1c711839655a307b39e8eea5bf410 (patch)
tree2812a5201beb2b52c92d6e3c958f2288b0253b68 /cli/js/workers_test.ts
parent4dc004f0a24fdc81026ec03326b9943a95f1a31d (diff)
add assertOps sanitizer in cli/js/ unit tests (#4209)
* add "assertOps" test assertion which makes sure test case is not "leaking" ops - ie. after test finishes there are no pending async ops * apply "assertOps" to all tests in "cli/js/" * fix numerous tests leaking ops * document problem with edge case in "clearInterval" and "clearTimeout" implementation where they may leak async ops * move "cli/js/worker_test.ts" to "cli/tests/worker_test.ts" and run as integration test; workers leak ops because of missing "terminate" implementation
Diffstat (limited to 'cli/js/workers_test.ts')
-rw-r--r--cli/js/workers_test.ts93
1 files changed, 0 insertions, 93 deletions
diff --git a/cli/js/workers_test.ts b/cli/js/workers_test.ts
deleted file mode 100644
index 5b8b1ef97..000000000
--- a/cli/js/workers_test.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-import {
- test,
- testPerm,
- assert,
- assertEquals,
- createResolvable
-} from "./test_util.ts";
-
-test(async function workersBasic(): Promise<void> {
- const promise = createResolvable();
- const jsWorker = new Worker("../tests/subdir/test_worker.js", {
- type: "module",
- name: "jsWorker"
- });
- const tsWorker = new Worker("../tests/subdir/test_worker.ts", {
- type: "module",
- name: "tsWorker"
- });
-
- tsWorker.onmessage = (e): void => {
- assertEquals(e.data, "Hello World");
- promise.resolve();
- };
-
- jsWorker.onmessage = (e): void => {
- assertEquals(e.data, "Hello World");
- tsWorker.postMessage("Hello World");
- };
-
- jsWorker.onerror = (e: Event): void => {
- e.preventDefault();
- jsWorker.postMessage("Hello World");
- };
-
- jsWorker.postMessage("Hello World");
- await promise;
-});
-
-test(async function nestedWorker(): Promise<void> {
- const promise = createResolvable();
-
- const nestedWorker = new Worker("../tests/subdir/nested_worker.js", {
- type: "module",
- name: "nested"
- });
-
- nestedWorker.onmessage = (e): void => {
- assert(e.data.type !== "error");
- promise.resolve();
- };
-
- nestedWorker.postMessage("Hello World");
- await promise;
-});
-
-test(async function workerThrowsWhenExecuting(): Promise<void> {
- const promise = createResolvable();
-
- const throwingWorker = new Worker("../tests/subdir/throwing_worker.js", {
- type: "module"
- });
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- throwingWorker.onerror = (e: any): void => {
- e.preventDefault();
- assert(/Uncaught Error: Thrown error/.test(e.message));
- promise.resolve();
- };
-
- await promise;
-});
-
-testPerm({ net: true }, async function workerCanUseFetch(): Promise<void> {
- const promise = createResolvable();
-
- const fetchingWorker = new Worker("../tests/subdir/fetching_worker.js", {
- type: "module"
- });
-
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
- fetchingWorker.onerror = (e: any): void => {
- e.preventDefault();
- promise.reject(e.message);
- };
-
- fetchingWorker.onmessage = (e): void => {
- assert(e.data === "Done!");
- promise.resolve();
- };
-
- await promise;
-});