mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
Add Deno.realpath (#3404)
This commit is contained in:
parent
658ec2aaf9
commit
f88dc4e197
7 changed files with 157 additions and 0 deletions
91
cli/js/realpath_test.ts
Normal file
91
cli/js/realpath_test.ts
Normal file
|
@ -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);
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue