diff options
author | 2023-09-21 21:42:49 -0400 | |
---|---|---|
committer | 2023-09-21 18:42:49 -0700 | |
commit | b05e10cd8b0f388b766819e263ff3f478888ed96 (patch) | |
tree | d6d68e3fcfdc056974e3c39581025812bb5eb4ea | |
parent | 92a5d845aedf925ca31e64fa41a199ca75058027 (diff) | |
download | bun-b05e10cd8b0f388b766819e263ff3f478888ed96.tar.gz bun-b05e10cd8b0f388b766819e263ff3f478888ed96.tar.zst bun-b05e10cd8b0f388b766819e263ff3f478888ed96.zip |
fix(node:fs): use the right copyFile constants (#5874)
-rw-r--r-- | src/bun.js/node/node_fs_constant.zig | 7 | ||||
-rw-r--r-- | test/js/node/fs/fs.test.ts | 31 |
2 files changed, 33 insertions, 5 deletions
diff --git a/src/bun.js/node/node_fs_constant.zig b/src/bun.js/node/node_fs_constant.zig index 4d2d0ec6a..75211723d 100644 --- a/src/bun.js/node/node_fs_constant.zig +++ b/src/bun.js/node/node_fs_constant.zig @@ -42,16 +42,15 @@ pub const Constants = struct { }; /// Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. - pub const COPYFILE_EXCL: i32 = 1 << Copyfile.exclusive; - + pub const COPYFILE_EXCL: i32 = Copyfile.exclusive; /// /// Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink. /// If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used. - pub const COPYFILE_FICLONE: i32 = 1 << Copyfile.clone; + pub const COPYFILE_FICLONE: i32 = Copyfile.clone; /// /// Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink. /// If the underlying platform does not support copy-on-write, then the operation will fail with an error. - pub const COPYFILE_FICLONE_FORCE: i32 = 1 << Copyfile.force; + pub const COPYFILE_FICLONE_FORCE: i32 = Copyfile.force; // File Open Constants /// Constant for fs.open(). Flag indicating to open a file for read-only access. pub const O_RDONLY = std.os.O.RDONLY; diff --git a/test/js/node/fs/fs.test.ts b/test/js/node/fs/fs.test.ts index 3e030f609..f9ef38fe8 100644 --- a/test/js/node/fs/fs.test.ts +++ b/test/js/node/fs/fs.test.ts @@ -136,6 +136,35 @@ describe("copyFileSync", () => { expect(Bun.hash(readFileSync(tempdir + "/copyFileSync.dest.blob"))).toBe(Bun.hash(buffer.buffer)); }); + it("constants are right", () => { + expect(fs.constants.COPYFILE_EXCL).toBe(1); + expect(fs.constants.COPYFILE_FICLONE).toBe(2); + expect(fs.constants.COPYFILE_FICLONE_FORCE).toBe(4); + }); + + it("FICLONE option does not error ever", () => { + const tempdir = `${tmpdir()}/fs.test.js/${Date.now()}.FICLONE/1234/hi`; + expect(existsSync(tempdir)).toBe(false); + expect(tempdir.includes(mkdirSync(tempdir, { recursive: true })!)).toBe(true); + + // that don't exist + copyFileSync(import.meta.path, tempdir + "/copyFileSync.js", fs.constants.COPYFILE_FICLONE); + copyFileSync(import.meta.path, tempdir + "/copyFileSync.js", fs.constants.COPYFILE_FICLONE); + copyFileSync(import.meta.path, tempdir + "/copyFileSync.js", fs.constants.COPYFILE_FICLONE); + }); + + it("COPYFILE_EXCL works", () => { + const tempdir = `${tmpdir()}/fs.test.js/${Date.now()}.COPYFILE_EXCL/1234/hi`; + expect(existsSync(tempdir)).toBe(false); + expect(tempdir.includes(mkdirSync(tempdir, { recursive: true })!)).toBe(true); + + // that don't exist + copyFileSync(import.meta.path, tempdir + "/copyFileSync.js", fs.constants.COPYFILE_EXCL); + expect(() => { + copyFileSync(import.meta.path, tempdir + "/copyFileSync.js", fs.constants.COPYFILE_EXCL); + }).toThrow(); + }); + if (process.platform === "linux") { describe("should work when copyFileRange is not available", () => { it("on large files", () => { @@ -212,7 +241,7 @@ describe("copyFileSync", () => { describe("mkdirSync", () => { it("should create a directory", () => { - const tempdir = `${tmpdir()}/fs.test.js/${Date.now()}/1234/hi`; + const tempdir = `${tmpdir()}/fs.test.js/${Date.now()}.mkdirSync/1234/hi`; expect(existsSync(tempdir)).toBe(false); expect(tempdir.includes(mkdirSync(tempdir, { recursive: true })!)).toBe(true); expect(existsSync(tempdir)).toBe(true); |