mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 17:34:47 -05:00
fix(ext/node): add throwIfNoEntry
option in fs.lstatSync
(#24006)
We didn't support the `throwIfNoEntry` option for Node's `fs.lstatSync` method. Note that the async variant doesn't have this option. Fixes https://github.com/denoland/deno/issues/23996
This commit is contained in:
parent
53606de634
commit
a0ddf73058
2 changed files with 29 additions and 4 deletions
|
@ -3,6 +3,7 @@
|
|||
// TODO(petamoriken): enable prefer-primordials for node polyfills
|
||||
// deno-lint-ignore-file prefer-primordials
|
||||
|
||||
import { denoErrorToNodeError } from "ext:deno_node/internal/errors.ts";
|
||||
import {
|
||||
BigIntStats,
|
||||
CFISBIS,
|
||||
|
@ -56,16 +57,31 @@ export const lstatPromise = promisify(lstat) as (
|
|||
export function lstatSync(path: string | URL): Stats;
|
||||
export function lstatSync(
|
||||
path: string | URL,
|
||||
options: { bigint: false },
|
||||
options: { bigint: false; throwIfNoEntry?: boolean },
|
||||
): Stats;
|
||||
export function lstatSync(
|
||||
path: string | URL,
|
||||
options: { bigint: true },
|
||||
options: { bigint: true; throwIfNoEntry?: boolean },
|
||||
): BigIntStats;
|
||||
export function lstatSync(
|
||||
path: string | URL,
|
||||
options?: statOptions,
|
||||
): Stats | BigIntStats {
|
||||
const origin = Deno.lstatSync(path);
|
||||
return CFISBIS(origin, options?.bigint || false);
|
||||
try {
|
||||
const origin = Deno.lstatSync(path);
|
||||
return CFISBIS(origin, options?.bigint || false);
|
||||
} catch (err) {
|
||||
if (
|
||||
options?.throwIfNoEntry === false &&
|
||||
err instanceof Deno.errors.NotFound
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (err instanceof Error) {
|
||||
throw denoErrorToNodeError(err, { syscall: "stat" });
|
||||
} else {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import {
|
|||
constants,
|
||||
createWriteStream,
|
||||
existsSync,
|
||||
lstatSync,
|
||||
mkdtempSync,
|
||||
promises,
|
||||
readFileSync,
|
||||
|
@ -156,3 +157,11 @@ Deno.test("[node/fs createWriteStream", async () => {
|
|||
await Deno.remove(tempDir, { recursive: true });
|
||||
}
|
||||
});
|
||||
|
||||
Deno.test(
|
||||
"[node/fs lstatSync] supports throwIfNoEntry option",
|
||||
() => {
|
||||
const result = lstatSync("non-existing-path", { throwIfNoEntry: false });
|
||||
assertEquals(result, undefined);
|
||||
},
|
||||
);
|
||||
|
|
Loading…
Add table
Reference in a new issue