summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/napi/init_test.js35
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/napi/init_test.js b/tests/napi/init_test.js
index 9db99d8a0..948682478 100644
--- a/tests/napi/init_test.js
+++ b/tests/napi/init_test.js
@@ -2,6 +2,7 @@
import { Buffer } from "node:buffer";
import { assert, libSuffix } from "./common.js";
+import { Worker } from "node:worker_threads";
const ops = Deno[Deno.internal].core.ops;
@@ -13,3 +14,37 @@ Deno.test("ctr initialization (napi_module_register)", {
assert(obj != null);
assert(typeof obj === "object");
});
+
+Deno.test("ctr initialization by multiple threads (napi_module_register)", {
+ ignore: Deno.build.os == "windows",
+}, async function () {
+ const path = new URL(`./module.${libSuffix}`, import.meta.url).pathname;
+ const obj = ops.op_napi_open(path, {}, Buffer, reportError);
+ const common = import.meta.resolve("./common.js");
+ assert(obj != null);
+ assert(typeof obj === "object");
+
+ const worker = new Worker(
+ `
+ import { Buffer } from "node:buffer";
+ import { parentPort } from "node:worker_threads";
+ import { assert } from "${common}";
+
+ const ops = Deno[Deno.internal].core.ops;
+ const obj = ops.op_napi_open("${path}", {}, Buffer, reportError);
+ assert(obj != null);
+ assert(typeof obj === "object");
+ parentPort.postMessage("ok");
+ `,
+ {
+ eval: true,
+ },
+ );
+
+ const p = Promise.withResolvers();
+ worker.on("message", (_m) => {
+ p.resolve();
+ });
+
+ await p.promise;
+});