diff options
author | 张超杰 <1098626505@qq.com> | 2020-04-27 04:27:24 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-26 16:27:24 -0400 |
commit | 49cad79fb1f908131db2a7918f97b6d2e6275f90 (patch) | |
tree | b0640c08bf86f23735570cdc794233bb699b85f3 /std | |
parent | 4f9bb11444ba7236f28ef1e722100b485c185c7c (diff) |
fix(std/fs): move dest if not exists and overwrite (#4910)
Diffstat (limited to 'std')
-rw-r--r-- | std/fs/move.ts | 8 | ||||
-rw-r--r-- | std/fs/move_test.ts | 40 |
2 files changed, 46 insertions, 2 deletions
diff --git a/std/fs/move.ts b/std/fs/move.ts index ee9498fd3..cf1e49193 100644 --- a/std/fs/move.ts +++ b/std/fs/move.ts @@ -21,7 +21,9 @@ export async function move( } if (overwrite) { - await Deno.remove(dest, { recursive: true }); + if (await exists(dest)) { + await Deno.remove(dest, { recursive: true }); + } await Deno.rename(src, dest); } else { if (await exists(dest)) { @@ -48,7 +50,9 @@ export function moveSync( } if (overwrite) { - Deno.removeSync(dest, { recursive: true }); + if (existsSync(dest)) { + Deno.removeSync(dest, { recursive: true }); + } Deno.renameSync(src, dest); } else { if (existsSync(dest)) { diff --git a/std/fs/move_test.ts b/std/fs/move_test.ts index 999b67cf0..ec899896c 100644 --- a/std/fs/move_test.ts +++ b/std/fs/move_test.ts @@ -42,6 +42,27 @@ Deno.test(async function moveDirectoryIfDestNotExists(): Promise<void> { await Deno.remove(destDir); }); +Deno.test(async function moveDirectoryIfDestNotExistsAndOverwrite(): Promise< + void +> { + const srcDir = path.join(testdataDir, "move_test_src_2"); + const destDir = path.join(testdataDir, "move_test_dest_2"); + + await Deno.mkdir(srcDir, { recursive: true }); + + // if dest directory not exist + await assertThrowsAsync( + async (): Promise<void> => { + await move(srcDir, destDir, { overwrite: true }); + throw new Error("should not throw error"); + }, + Error, + "should not throw error" + ); + + await Deno.remove(destDir); +}); + Deno.test(async function moveFileIfSrcNotExists(): Promise<void> { const srcFile = path.join(testdataDir, "move_test_src_3", "test.txt"); const destFile = path.join(testdataDir, "move_test_dest_3", "test.txt"); @@ -208,6 +229,25 @@ Deno.test(function moveSyncDirectoryIfDestNotExists(): void { Deno.removeSync(destDir); }); +Deno.test(function moveSyncDirectoryIfDestNotExistsAndOverwrite(): void { + const srcDir = path.join(testdataDir, "move_sync_test_src_2"); + const destDir = path.join(testdataDir, "move_sync_test_dest_2"); + + Deno.mkdirSync(srcDir, { recursive: true }); + + // if dest directory not exist width overwrite + assertThrows( + (): void => { + moveSync(srcDir, destDir, { overwrite: true }); + throw new Error("should not throw error"); + }, + Error, + "should not throw error" + ); + + Deno.removeSync(destDir); +}); + Deno.test(function moveSyncFileIfSrcNotExists(): void { const srcFile = path.join(testdataDir, "move_sync_test_src_3", "test.txt"); const destFile = path.join(testdataDir, "move_sync_test_dest_3", "test.txt"); |