diff options
author | 2023-02-06 21:18:58 -0800 | |
---|---|---|
committer | 2023-02-06 21:18:58 -0800 | |
commit | 7ddbbc53b48b32b7a78f6654facfe8d7dd88a229 (patch) | |
tree | 7704b42907df5573f6859c28967371d4f95c1e4d /test/bun.js | |
parent | 85611272c6ecc2c9a4912e717c796022467c21b0 (diff) | |
download | bun-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.js | 29 |
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(); }); |