summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYoshiya Hinosawa <stibium121@gmail.com>2024-01-23 12:59:39 +0900
committerGitHub <noreply@github.com>2024-01-23 12:59:39 +0900
commit2af0c0a3c6ea017bef2481c1a1ce0806457d5427 (patch)
treece75b5b9cc0d82d29526e4b47c1fd70bc94d27ae
parent7e4145df253e234c188be33ece2ae21753bc19af (diff)
fix(ext/node): fix no arg call of fs.promises.readFile (#22030)
-rw-r--r--cli/tests/unit_node/_fs/_fs_readFile_test.ts7
-rw-r--r--ext/node/polyfills/_fs/_fs_readFile.ts18
2 files changed, 18 insertions, 7 deletions
diff --git a/cli/tests/unit_node/_fs/_fs_readFile_test.ts b/cli/tests/unit_node/_fs/_fs_readFile_test.ts
index 7d9e117ce..05cb90974 100644
--- a/cli/tests/unit_node/_fs/_fs_readFile_test.ts
+++ b/cli/tests/unit_node/_fs/_fs_readFile_test.ts
@@ -1,6 +1,6 @@
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
import { assertCallbackErrorUncaught } from "../_test_utils.ts";
-import { readFile, readFileSync } from "node:fs";
+import { promises, readFile, readFileSync } from "node:fs";
import * as path from "../../../../test_util/std/path/mod.ts";
import { assert, assertEquals } from "../../../../test_util/std/assert/mod.ts";
@@ -116,3 +116,8 @@ Deno.test("[std/node/fs] readFile callback isn't called twice if error is thrown
},
});
});
+
+Deno.test("fs.promises.readFile with no arg call rejects with error correctly", async () => {
+ // @ts-ignore no arg call needs to be supported
+ await promises.readFile().catch((_e) => {});
+});
diff --git a/ext/node/polyfills/_fs/_fs_readFile.ts b/ext/node/polyfills/_fs/_fs_readFile.ts
index 415d81a5b..7e231d8ec 100644
--- a/ext/node/polyfills/_fs/_fs_readFile.ts
+++ b/ext/node/polyfills/_fs/_fs_readFile.ts
@@ -18,7 +18,6 @@ import {
Encodings,
TextEncodings,
} from "ext:deno_node/_utils.ts";
-import { promisify } from "ext:deno_node/internal/util.mjs";
function maybeDecode(data: Uint8Array, encoding: TextEncodings): string;
function maybeDecode(
@@ -91,11 +90,18 @@ export function readFile(
}
}
-export const readFilePromise = promisify(readFile) as (
- & ((path: Path, opt: TextOptionsArgument) => Promise<string>)
- & ((path: Path, opt?: BinaryOptionsArgument) => Promise<Buffer>)
- & ((path: Path, opt?: FileOptionsArgument) => Promise<Buffer>)
-);
+export function readFilePromise(
+ path: Path,
+ options?: FileOptionsArgument | null | undefined,
+ // deno-lint-ignore no-explicit-any
+): Promise<any> {
+ return new Promise((resolve, reject) => {
+ readFile(path, options, (err, data) => {
+ if (err) reject(err);
+ else resolve(data);
+ });
+ });
+}
export function readFileSync(
path: string | URL,