diff options
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); +}); |