diff options
author | X <git@iamje.com> | 2020-11-03 02:11:42 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-02 19:11:42 +0100 |
commit | 6d63391a380976ee4c5577d8efe449afede66f36 (patch) | |
tree | 7429ce425ea07b125dbd7ba6addd7cd7f69a09c2 /std/node/_fs | |
parent | 397fec63d1bacabd2b8e48bd30a1727003a7a72b (diff) |
feat(std/node/fs): add realpath and realpathSync (#8169)
Diffstat (limited to 'std/node/_fs')
-rw-r--r-- | std/node/_fs/_fs_realpath.ts | 22 | ||||
-rw-r--r-- | std/node/_fs/_fs_realpath_test.ts | 36 |
2 files changed, 58 insertions, 0 deletions
diff --git a/std/node/_fs/_fs_realpath.ts b/std/node/_fs/_fs_realpath.ts new file mode 100644 index 000000000..586a87cfc --- /dev/null +++ b/std/node/_fs/_fs_realpath.ts @@ -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); +} diff --git a/std/node/_fs/_fs_realpath_test.ts b/std/node/_fs/_fs_realpath_test.ts new file mode 100644 index 000000000..9ab0173c1 --- /dev/null +++ b/std/node/_fs/_fs_realpath_test.ts @@ -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); +}); |