diff options
author | 2023-08-31 23:04:19 -0700 | |
---|---|---|
committer | 2023-08-31 23:04:19 -0700 | |
commit | 5288178c865cd9dcb500b00a65197bf2641d4e5c (patch) | |
tree | 1394a9e42f3de39c6582e14aab1f5b9d96167346 /test | |
parent | 6ae4dd808b986649616e4ba498e70480441e3b3c (diff) | |
download | bun-5288178c865cd9dcb500b00a65197bf2641d4e5c.tar.gz bun-5288178c865cd9dcb500b00a65197bf2641d4e5c.tar.zst bun-5288178c865cd9dcb500b00a65197bf2641d4e5c.zip |
fix(runtime): `fs.cp` edge cases (#4439)
* yippee
* enable cpSync tests
* much better
* that doesnt actually do anything
* lose
Diffstat (limited to 'test')
-rw-r--r-- | test/js/node/fs/cp.test.ts | 39 |
1 files changed, 36 insertions, 3 deletions
diff --git a/test/js/node/fs/cp.test.ts b/test/js/node/fs/cp.test.ts index 37da58843..eae8a0e77 100644 --- a/test/js/node/fs/cp.test.ts +++ b/test/js/node/fs/cp.test.ts @@ -3,7 +3,7 @@ import { describe, test, expect, jest } from "bun:test"; import { tempDirWithFiles } from "harness"; const impls = [ - // ["cpSync", fs.cpSync], + ["cpSync", fs.cpSync], ["cp", fs.promises.cp], ] as const; @@ -40,7 +40,9 @@ for (const [name, copy] of impls) { "from/a.txt": "a", }); - await copyShouldThrow(basename + "/from", basename + "/result"); + const e = await copyShouldThrow(basename + "/from", basename + "/result"); + expect(e.code).toBe("EISDIR"); + expect(e.path).toBe(basename + "/from"); }); test("recursive directory structure - no destination", async () => { @@ -129,7 +131,12 @@ for (const [name, copy] of impls) { "result/a.txt": "win", }); - await copyShouldThrow(basename + "/from/a.txt", basename + "/result/a.txt", { force: false, errorOnExist: true }); + const e = await copyShouldThrow(basename + "/from/a.txt", basename + "/result/a.txt", { + force: false, + errorOnExist: true, + }); + expect(e.code).toBe("EEXIST"); + expect(e.path).toBe(basename + "/result/a.txt"); assertContent(basename + "/result/a.txt", "win"); }); @@ -251,5 +258,31 @@ for (const [name, copy] of impls) { [basename + "/from/b.txt", basename + "/result/b.txt"], ]); }); + + test("trailing slash", async () => { + const basename = tempDirWithFiles("cp", { + "from/a.txt": "a", + "from/b.txt": "b", + }); + + await copy(basename + "/from/", basename + "/result/", { recursive: true }); + + assertContent(basename + "/result/a.txt", "a"); + assertContent(basename + "/result/b.txt", "b"); + }); + + test("copy directory will ensure directory exists", async () => { + const basename = tempDirWithFiles("cp", { + "from/a.txt": "a", + "from/b.txt": "b", + }); + + fs.mkdirSync(basename + "/result/"); + + await copy(basename + "/from/", basename + "/hello/world/", { recursive: true }); + + assertContent(basename + "/hello/world/a.txt", "a"); + assertContent(basename + "/hello/world/b.txt", "b"); + }); }); } |