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:
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 { 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,
|
||||
|
|
Loading…
Reference in a new issue