From 664119841a92d13a297e88032f9985fe7e35f77c Mon Sep 17 00:00:00 2001 From: dave caruso Date: Mon, 21 Aug 2023 16:26:07 -0700 Subject: Implement `napi_ref_threadsafe_function` (#4156) * Implement napi_ref_threadsafe_function * work on this * i hate event loops * little better * clean --- test/js/third_party/fsevents/fsevents-event-loop.mjs | 10 ++++++++++ test/js/third_party/fsevents/fsevents.test.ts | 20 ++++++++++++++++++++ test/js/third_party/fsevents/package.json | 6 ++++++ 3 files changed, 36 insertions(+) create mode 100644 test/js/third_party/fsevents/fsevents-event-loop.mjs create mode 100644 test/js/third_party/fsevents/fsevents.test.ts create mode 100644 test/js/third_party/fsevents/package.json (limited to 'test/js') diff --git a/test/js/third_party/fsevents/fsevents-event-loop.mjs b/test/js/third_party/fsevents/fsevents-event-loop.mjs new file mode 100644 index 000000000..80e4729a1 --- /dev/null +++ b/test/js/third_party/fsevents/fsevents-event-loop.mjs @@ -0,0 +1,10 @@ +import fsevents from "fsevents"; + +if (process.argv.length < 3) { + console.log("Usage: bun fsevents-event-loop.ts "); + process.exit(1); +} +fsevents.watch(process.argv[2], () => { + console.log("it works!"); + process.exit(0); +}); diff --git a/test/js/third_party/fsevents/fsevents.test.ts b/test/js/third_party/fsevents/fsevents.test.ts new file mode 100644 index 000000000..1381347e9 --- /dev/null +++ b/test/js/third_party/fsevents/fsevents.test.ts @@ -0,0 +1,20 @@ +import { bunEnv, bunExe } from "harness"; +import path from "path"; +import fs from "fs"; +import os from "os"; + +test("fsevents works (napi_ref_threadsafe_function keeps event loop alive)", async () => { + const tempFile = fs.mkdtempSync(path.join(os.tmpdir(), "fsevents-test-")); + const spawned = Bun.spawn({ + cmd: [bunExe(), "run", path.join(import.meta.dir, "fsevents-event-loop.mjs"), tempFile], + env: bunEnv, + stdio: ["pipe", "pipe", "pipe"], + }); + await Bun.sleep(50); + if (spawned.killed) { + throw new Error("event loop died, test failed"); + } + await Bun.write(tempFile + "/hello.txt", "test"); + expect(await spawned.exited).toBe(0); + expect(await new Response(spawned.stdout).text()).toBe("it works!\n"); +}); diff --git a/test/js/third_party/fsevents/package.json b/test/js/third_party/fsevents/package.json new file mode 100644 index 000000000..315c73e1a --- /dev/null +++ b/test/js/third_party/fsevents/package.json @@ -0,0 +1,6 @@ +{ + "name": "fsevents-test", + "dependencies": { + "fsevents": "2.3.2" + } +} -- cgit v1.2.3