1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-23 07:44:48 -05:00

feat(std/node/fs): add realpath and realpathSync (#8169)

This commit is contained in:
X 2020-11-03 02:11:42 +08:00 committed by GitHub
parent 397fec63d1
commit 6d63391a38
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 61 additions and 0 deletions

View file

@ -0,0 +1,22 @@
type Options = { encoding: string };
type Callback = (err: Error | null, path?: string) => void;
export function realpath(
path: string,
options?: Options | Callback,
callback?: Callback,
) {
if (typeof options === "function") {
callback = options;
}
if (!callback) {
throw new Error("No callback function supplied");
}
Deno.realPath(path)
.then((path) => callback!(null, path))
.catch((err) => callback!(err));
}
export function realpathSync(path: string): string {
return Deno.realPathSync(path);
}

View file

@ -0,0 +1,36 @@
import { assertEquals } from "../../testing/asserts.ts";
import { realpath, realpathSync } from "./_fs_realpath.ts";
Deno.test("realpath", async function () {
const tempFile = await Deno.makeTempFile();
const tempFileAlias = tempFile + ".alias";
await Deno.symlink(tempFile, tempFileAlias);
const realPath = await new Promise((resolve, reject) => {
realpath(tempFile, (err, path) => {
if (err) {
reject(err);
return;
}
resolve(path);
});
});
const realSymLinkPath = await new Promise((resolve, reject) => {
realpath(tempFileAlias, (err, path) => {
if (err) {
reject(err);
return;
}
resolve(path);
});
});
assertEquals(realPath, realSymLinkPath);
});
Deno.test("realpathSync", function () {
const tempFile = Deno.makeTempFileSync();
const tempFileAlias = tempFile + ".alias";
Deno.symlinkSync(tempFile, tempFileAlias);
const realPath = realpathSync(tempFile);
const realSymLinkPath = realpathSync(tempFileAlias);
assertEquals(realPath, realSymLinkPath);
});

View file

@ -12,6 +12,7 @@ import { mkdir, mkdirSync } from "./_fs/_fs_mkdir.ts";
import { copyFile, copyFileSync } from "./_fs/_fs_copy.ts";
import { writeFile, writeFileSync } from "./_fs/_fs_writeFile.ts";
import { readdir, readdirSync } from "./_fs/_fs_readdir.ts";
import { realpath, realpathSync } from "./_fs/_fs_realpath.ts";
import { rename, renameSync } from "./_fs/_fs_rename.ts";
import { rmdir, rmdirSync } from "./_fs/_fs_rmdir.ts";
import { unlink, unlinkSync } from "./_fs/_fs_unlink.ts";
@ -51,6 +52,8 @@ export {
readFileSync,
readlink,
readlinkSync,
realpath,
realpathSync,
rename,
renameSync,
rmdir,