diff options
author | Bartek IwaĆczuk <biwanczuk@gmail.com> | 2020-03-03 18:22:53 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-03-03 18:22:53 +0100 |
commit | ee452ad883c1c711839655a307b39e8eea5bf410 (patch) | |
tree | 2812a5201beb2b52c92d6e3c958f2288b0253b68 /cli/js/workers_test.ts | |
parent | 4dc004f0a24fdc81026ec03326b9943a95f1a31d (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.ts | 93 |
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; -}); |