aboutsummaryrefslogtreecommitdiff
path: root/test/js
diff options
context:
space:
mode:
Diffstat (limited to 'test/js')
-rw-r--r--test/js/third_party/fsevents/fsevents-event-loop.mjs10
-rw-r--r--test/js/third_party/fsevents/fsevents.test.ts20
-rw-r--r--test/js/third_party/fsevents/package.json6
3 files changed, 36 insertions, 0 deletions
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 <directory>");
+ 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"
+ }
+}