diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2019-11-26 00:40:57 -0800 |
---|---|---|
committer | Ry Dahl <ry@tinyclouds.org> | 2019-11-26 00:40:57 -0800 |
commit | f88dc4e197f36842b13843dd88da3d74d67578e5 (patch) | |
tree | b74a0da664bf0c126c345efa73815ea96db0b70b /cli/js/realpath_test.ts | |
parent | 658ec2aaf9c7e0d0b4ded4e97a3d89dc2fa25806 (diff) |
Add Deno.realpath (#3404)
Diffstat (limited to 'cli/js/realpath_test.ts')
-rw-r--r-- | cli/js/realpath_test.ts | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/cli/js/realpath_test.ts b/cli/js/realpath_test.ts new file mode 100644 index 000000000..1dc976578 --- /dev/null +++ b/cli/js/realpath_test.ts @@ -0,0 +1,91 @@ +// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. +import { testPerm, assert, assertEquals } from "./test_util.ts"; + +testPerm({ read: true }, function realpathSyncSuccess(): void { + const incompletePath = "cli/tests/fixture.json"; + const realPath = Deno.realpathSync(incompletePath); + assert(realPath.startsWith("/")); + assert(realPath.endsWith(incompletePath)); +}); + +if (Deno.build.os !== "win") { + testPerm({ read: true, write: true }, function realpathSyncSymlink(): void { + const testDir = Deno.makeTempDirSync(); + const target = testDir + "/target"; + const symlink = testDir + "/symln"; + Deno.mkdirSync(target); + Deno.symlinkSync(target, symlink); + const targetPath = Deno.realpathSync(symlink); + assert(targetPath.startsWith("/")); + assert(targetPath.endsWith("/target")); + }); +} + +testPerm({ read: false }, function realpathSyncPerm(): void { + let caughtError = false; + try { + Deno.realpathSync("some_file"); + } catch (e) { + caughtError = true; + assertEquals(e.kind, Deno.ErrorKind.PermissionDenied); + assertEquals(e.name, "PermissionDenied"); + } + assert(caughtError); +}); + +testPerm({ read: true }, function realpathSyncNotFound(): void { + let caughtError = false; + try { + Deno.realpathSync("bad_filename"); + } catch (e) { + caughtError = true; + assertEquals(e.kind, Deno.ErrorKind.NotFound); + } + assert(caughtError); +}); + +testPerm({ read: true }, async function realpathSuccess(): Promise<void> { + const incompletePath = "cli/tests/fixture.json"; + const realPath = await Deno.realpath(incompletePath); + assert(realPath.startsWith("/")); + assert(realPath.endsWith(incompletePath)); +}); + +if (Deno.build.os !== "win") { + testPerm( + { read: true, write: true }, + async function realpathSymlink(): Promise<void> { + const testDir = Deno.makeTempDirSync(); + const target = testDir + "/target"; + const symlink = testDir + "/symln"; + Deno.mkdirSync(target); + Deno.symlinkSync(target, symlink); + const targetPath = await Deno.realpath(symlink); + assert(targetPath.startsWith("/")); + assert(targetPath.endsWith("/target")); + } + ); +} + +testPerm({ read: false }, async function realpathPerm(): Promise<void> { + let caughtError = false; + try { + await Deno.realpath("some_file"); + } catch (e) { + caughtError = true; + assertEquals(e.kind, Deno.ErrorKind.PermissionDenied); + assertEquals(e.name, "PermissionDenied"); + } + assert(caughtError); +}); + +testPerm({ read: true }, async function realpathNotFound(): Promise<void> { + let caughtError = false; + try { + await Deno.realpath("bad_filename"); + } catch (e) { + caughtError = true; + assertEquals(e.kind, Deno.ErrorKind.NotFound); + } + assert(caughtError); +}); |