mirror of
https://github.com/denoland/deno.git
synced 2025-01-11 00:21:05 -05:00
feat(std/node/fs): add realpath and realpathSync (#8169)
This commit is contained in:
parent
397fec63d1
commit
6d63391a38
3 changed files with 61 additions and 0 deletions
22
std/node/_fs/_fs_realpath.ts
Normal file
22
std/node/_fs/_fs_realpath.ts
Normal 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);
|
||||||
|
}
|
36
std/node/_fs/_fs_realpath_test.ts
Normal file
36
std/node/_fs/_fs_realpath_test.ts
Normal 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);
|
||||||
|
});
|
|
@ -12,6 +12,7 @@ import { mkdir, mkdirSync } from "./_fs/_fs_mkdir.ts";
|
||||||
import { copyFile, copyFileSync } from "./_fs/_fs_copy.ts";
|
import { copyFile, copyFileSync } from "./_fs/_fs_copy.ts";
|
||||||
import { writeFile, writeFileSync } from "./_fs/_fs_writeFile.ts";
|
import { writeFile, writeFileSync } from "./_fs/_fs_writeFile.ts";
|
||||||
import { readdir, readdirSync } from "./_fs/_fs_readdir.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 { rename, renameSync } from "./_fs/_fs_rename.ts";
|
||||||
import { rmdir, rmdirSync } from "./_fs/_fs_rmdir.ts";
|
import { rmdir, rmdirSync } from "./_fs/_fs_rmdir.ts";
|
||||||
import { unlink, unlinkSync } from "./_fs/_fs_unlink.ts";
|
import { unlink, unlinkSync } from "./_fs/_fs_unlink.ts";
|
||||||
|
@ -51,6 +52,8 @@ export {
|
||||||
readFileSync,
|
readFileSync,
|
||||||
readlink,
|
readlink,
|
||||||
readlinkSync,
|
readlinkSync,
|
||||||
|
realpath,
|
||||||
|
realpathSync,
|
||||||
rename,
|
rename,
|
||||||
renameSync,
|
renameSync,
|
||||||
rmdir,
|
rmdir,
|
||||||
|
|
Loading…
Reference in a new issue