aboutsummaryrefslogtreecommitdiff
path: root/test/bun.js
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-02-06 21:18:58 -0800
committerGravatar Jarred Sumner <709451+Jarred-Sumner@users.noreply.github.com> 2023-02-06 21:18:58 -0800
commit7ddbbc53b48b32b7a78f6654facfe8d7dd88a229 (patch)
tree7704b42907df5573f6859c28967371d4f95c1e4d /test/bun.js
parent85611272c6ecc2c9a4912e717c796022467c21b0 (diff)
downloadbun-7ddbbc53b48b32b7a78f6654facfe8d7dd88a229.tar.gz
bun-7ddbbc53b48b32b7a78f6654facfe8d7dd88a229.tar.zst
bun-7ddbbc53b48b32b7a78f6654facfe8d7dd88a229.zip
Make `Stat` functions fast
Diffstat (limited to 'test/bun.js')
-rw-r--r--test/bun.js/fs.test.js29
1 files changed, 28 insertions, 1 deletions
diff --git a/test/bun.js/fs.test.js b/test/bun.js/fs.test.js
index f78ce13da..a203a47b4 100644
--- a/test/bun.js/fs.test.js
+++ b/test/bun.js/fs.test.js
@@ -356,12 +356,24 @@ describe("writeFileSync", () => {
});
});
+function triggerDOMJIT(target, fn, result) {
+ for (let i = 0; i < 9999; i++) {
+ if (fn.apply(target) !== result) {
+ throw new Error("DOMJIT failed");
+ }
+ }
+}
+
describe("lstat", () => {
it("file metadata is correct", () => {
const fileStats = lstatSync(new URL("./fs-stream.js", import.meta.url).toString().slice("file://".length - 1));
expect(fileStats.isSymbolicLink()).toBe(false);
expect(fileStats.isFile()).toBe(true);
expect(fileStats.isDirectory()).toBe(false);
+
+ triggerDOMJIT(fileStats, fileStats.isFile, true);
+ triggerDOMJIT(fileStats, fileStats.isDirectory, false);
+ triggerDOMJIT(fileStats, fileStats.isSymbolicLink, false);
});
it("folder metadata is correct", () => {
@@ -369,6 +381,10 @@ describe("lstat", () => {
expect(fileStats.isSymbolicLink()).toBe(false);
expect(fileStats.isFile()).toBe(false);
expect(fileStats.isDirectory()).toBe(true);
+
+ triggerDOMJIT(fileStats, fileStats.isFile, false);
+ triggerDOMJIT(fileStats, fileStats.isDirectory, true);
+ triggerDOMJIT(fileStats, fileStats.isSymbolicLink, false);
});
it("symlink metadata is correct", () => {
@@ -376,6 +392,10 @@ describe("lstat", () => {
expect(linkStats.isSymbolicLink()).toBe(true);
expect(linkStats.isFile()).toBe(false);
expect(linkStats.isDirectory()).toBe(false);
+
+ triggerDOMJIT(linkStats, linkStats.isFile, false);
+ triggerDOMJIT(linkStats, linkStats.isDirectory, false);
+ triggerDOMJIT(linkStats, linkStats.isSymbolicLink, true);
});
});
@@ -385,6 +405,10 @@ describe("stat", () => {
expect(fileStats.isSymbolicLink()).toBe(false);
expect(fileStats.isFile()).toBe(true);
expect(fileStats.isDirectory()).toBe(false);
+
+ triggerDOMJIT(fileStats, fileStats.isFile, true);
+ triggerDOMJIT(fileStats, fileStats.isDirectory, false);
+ triggerDOMJIT(fileStats, fileStats.isSymbolicLink, false);
});
it("folder metadata is correct", () => {
@@ -410,6 +434,10 @@ describe("stat", () => {
expect(typeof fileStats.mtime).toBe("object");
expect(typeof fileStats.ctime).toBe("object");
expect(typeof fileStats.birthtime).toBe("object");
+
+ triggerDOMJIT(fileStats, fileStats.isFile, false);
+ triggerDOMJIT(fileStats, fileStats.isDirectory, true);
+ triggerDOMJIT(fileStats, fileStats.isSymbolicLink, false);
});
it("stat returns ENOENT", () => {
@@ -770,7 +798,6 @@ it("fs.constants", () => {
expect(constants.S_IWOTH).toBeDefined();
});
-
it("fs.Dirent", () => {
expect(Dirent).toBeDefined();
});