aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar dave caruso <me@paperdave.net> 2023-08-21 16:26:07 -0700
committerGravatar GitHub <noreply@github.com> 2023-08-21 16:26:07 -0700
commit664119841a92d13a297e88032f9985fe7e35f77c (patch)
tree0fe664b158d2313d42bb20d6f10b795194a206bb /test
parent397182b400067be7b5293899fb3855524d07d8bf (diff)
downloadbun-664119841a92d13a297e88032f9985fe7e35f77c.tar.gz
bun-664119841a92d13a297e88032f9985fe7e35f77c.tar.zst
bun-664119841a92d13a297e88032f9985fe7e35f77c.zip
Implement `napi_ref_threadsafe_function` (#4156)
* Implement napi_ref_threadsafe_function * work on this * i hate event loops * little better * clean
Diffstat (limited to 'test')
-rwxr-xr-xtest/bun.lockbbin153753 -> 153785 bytes
-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
-rw-r--r--test/package.json1
5 files changed, 37 insertions, 0 deletions
diff --git a/test/bun.lockb b/test/bun.lockb
index 98c35844d..c94d5aff3 100755
--- a/test/bun.lockb
+++ b/test/bun.lockb
Binary files differ
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"
+ }
+}
diff --git a/test/package.json b/test/package.json
index f841d2003..099f3d312 100644
--- a/test/package.json
+++ b/test/package.json
@@ -17,6 +17,7 @@
"es-module-lexer": "1.3.0",
"esbuild": "0.18.6",
"express": "4.18.2",
+ "fsevents": "2.3.2",
"iconv-lite": "0.6.3",
"jest-extended": "4.0.0",
"lodash": "4.17.21",