summaryrefslogtreecommitdiff
path: root/tests/unit_node/async_hooks_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit_node/async_hooks_test.ts')
-rw-r--r--tests/unit_node/async_hooks_test.ts27
1 files changed, 26 insertions, 1 deletions
diff --git a/tests/unit_node/async_hooks_test.ts b/tests/unit_node/async_hooks_test.ts
index f153f6753..91130972c 100644
--- a/tests/unit_node/async_hooks_test.ts
+++ b/tests/unit_node/async_hooks_test.ts
@@ -1,5 +1,7 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { AsyncLocalStorage, AsyncResource } from "node:async_hooks";
+import process from "node:process";
+import { setImmediate } from "node:timers";
import { assert, assertEquals } from "@std/assert";
Deno.test(async function foo() {
@@ -92,7 +94,7 @@ Deno.test(async function enterWith() {
});
assertEquals(await deferred.promise, { x: 2 });
- assertEquals(await deferred1.promise, { x: 1 });
+ assertEquals(await deferred1.promise, null);
});
Deno.test(async function snapshot() {
@@ -135,3 +137,26 @@ Deno.test(function emitDestroyStub() {
const resource = new AsyncResource("foo");
assert(typeof resource.emitDestroy === "function");
});
+
+Deno.test(async function worksWithAsyncAPIs() {
+ const store = new AsyncLocalStorage();
+ const test = () => assertEquals(store.getStore(), "data");
+ await store.run("data", async () => {
+ test();
+ queueMicrotask(() => test());
+ process.nextTick(() => test());
+ setImmediate(() => test());
+ setTimeout(() => test(), 0);
+ const intervalId = setInterval(() => {
+ test();
+ clearInterval(intervalId);
+ }, 0);
+
+ store.run("data2", () => {
+ assertEquals(store.getStore(), "data2");
+ });
+
+ await new Promise((r) => setTimeout(r, 50));
+ test();
+ });
+});