diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/dts/lib.deno.ns.d.ts | 10 | ||||
-rw-r--r-- | cli/tests/unit/rename_test.ts | 40 |
2 files changed, 47 insertions, 3 deletions
diff --git a/cli/dts/lib.deno.ns.d.ts b/cli/dts/lib.deno.ns.d.ts index c8b4b60a0..34f8c2ad5 100644 --- a/cli/dts/lib.deno.ns.d.ts +++ b/cli/dts/lib.deno.ns.d.ts @@ -1322,7 +1322,10 @@ declare namespace Deno { * they are. It's always an error to rename anything to a non-empty directory. * * Requires `allow-read` and `allow-write` permissions. */ - export function renameSync(oldpath: string, newpath: string): void; + export function renameSync( + oldpath: string | URL, + newpath: string | URL, + ): void; /** Renames (moves) `oldpath` to `newpath`. Paths may be files or directories. * If `newpath` already exists and is not a directory, `rename()` replaces it. @@ -1339,7 +1342,10 @@ declare namespace Deno { * they are. It's always an error to rename anything to a non-empty directory. * * Requires `allow-read` and `allow-write` permission. */ - export function rename(oldpath: string, newpath: string): Promise<void>; + export function rename( + oldpath: string | URL, + newpath: string | URL, + ): Promise<void>; /** Synchronously reads and returns the entire contents of a file as utf8 * encoded string. Reading a directory throws an error. diff --git a/cli/tests/unit/rename_test.ts b/cli/tests/unit/rename_test.ts index 09633aed7..711b63aa7 100644 --- a/cli/tests/unit/rename_test.ts +++ b/cli/tests/unit/rename_test.ts @@ -1,5 +1,11 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. -import { assert, assertEquals, assertThrows, unitTest } from "./test_util.ts"; +import { + assert, + assertEquals, + assertThrows, + pathToAbsoluteFileUrl, + unitTest, +} from "./test_util.ts"; function assertMissing(path: string): void { let caughtErr = false; @@ -41,6 +47,22 @@ unitTest( ); unitTest( + { perms: { read: true, write: true } }, + function renameSyncWithURL(): void { + const testDir = Deno.makeTempDirSync(); + const oldpath = testDir + "/oldpath"; + const newpath = testDir + "/newpath"; + Deno.mkdirSync(oldpath); + Deno.renameSync( + pathToAbsoluteFileUrl(oldpath), + pathToAbsoluteFileUrl(newpath), + ); + assertDirectory(newpath); + assertMissing(oldpath); + }, +); + +unitTest( { perms: { read: false, write: true } }, function renameSyncReadPerm(): void { assertThrows(() => { @@ -75,6 +97,22 @@ unitTest( }, ); +unitTest( + { perms: { read: true, write: true } }, + async function renameWithURL(): Promise<void> { + const testDir = Deno.makeTempDirSync(); + const oldpath = testDir + "/oldpath"; + const newpath = testDir + "/newpath"; + Deno.mkdirSync(oldpath); + await Deno.rename( + pathToAbsoluteFileUrl(oldpath), + pathToAbsoluteFileUrl(newpath), + ); + assertDirectory(newpath); + assertMissing(oldpath); + }, +); + function readFileString(filename: string): string { const dataRead = Deno.readFileSync(filename); const dec = new TextDecoder("utf-8"); |