summaryrefslogtreecommitdiff
path: root/std/node/_fs/promises
diff options
context:
space:
mode:
authorMarcos Casagrande <marcoscvp90@gmail.com>2020-05-20 08:50:48 +0200
committerGitHub <noreply@github.com>2020-05-20 02:50:48 -0400
commiteb5acb39d5936d3e0fde44a33357cda88a5ff55f (patch)
tree8595b6fea985fcedffc1a92cd2f3de49c1c7ceb4 /std/node/_fs/promises
parent62c34bc21e8864ec5701ad493c73224367627580 (diff)
feat(std/node): Add fs.promises.readFile (#5656)
Diffstat (limited to 'std/node/_fs/promises')
-rw-r--r--std/node/_fs/promises/_fs_readFile.ts17
-rw-r--r--std/node/_fs/promises/_fs_readFile_test.ts37
-rw-r--r--std/node/_fs/promises/mod.ts1
3 files changed, 55 insertions, 0 deletions
diff --git a/std/node/_fs/promises/_fs_readFile.ts b/std/node/_fs/promises/_fs_readFile.ts
new file mode 100644
index 000000000..9e4a4ed43
--- /dev/null
+++ b/std/node/_fs/promises/_fs_readFile.ts
@@ -0,0 +1,17 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+import { FileOptions } from "../_fs_common.ts";
+import { MaybeEmpty } from "../../_utils.ts";
+
+import { readFile as readFileCallback } from "../_fs_readFile.ts";
+
+export function readFile(
+ path: string | URL,
+ options?: FileOptions | string
+): Promise<MaybeEmpty<string | Uint8Array>> {
+ return new Promise((resolve, reject) => {
+ readFileCallback(path, options, (err, data): void => {
+ if (err) return reject(err);
+ resolve(data);
+ });
+ });
+}
diff --git a/std/node/_fs/promises/_fs_readFile_test.ts b/std/node/_fs/promises/_fs_readFile_test.ts
new file mode 100644
index 000000000..ac3c8fdda
--- /dev/null
+++ b/std/node/_fs/promises/_fs_readFile_test.ts
@@ -0,0 +1,37 @@
+const { test } = Deno;
+import { readFile } from "./_fs_readFile.ts";
+import * as path from "../../../path/mod.ts";
+import { assertEquals, assert } from "../../../testing/asserts.ts";
+
+const testData = path.resolve(
+ path.join("node", "_fs", "testdata", "hello.txt")
+);
+
+test("readFileSuccess", async function () {
+ const data = await readFile(testData);
+
+ assert(data instanceof Uint8Array);
+ assertEquals(new TextDecoder().decode(data as Uint8Array), "hello world");
+});
+
+test("readFileEncodeUtf8Success", async function () {
+ const data = await readFile(testData, { encoding: "utf8" });
+
+ assertEquals(typeof data, "string");
+ assertEquals(data as string, "hello world");
+});
+
+test("readFileEncodingAsString", async function () {
+ const data = await readFile(testData, "utf8");
+
+ assertEquals(typeof data, "string");
+ assertEquals(data as string, "hello world");
+});
+
+test("readFileError", async function () {
+ try {
+ await readFile("invalid-file", "utf8");
+ } catch (e) {
+ assert(e instanceof Deno.errors.NotFound);
+ }
+});
diff --git a/std/node/_fs/promises/mod.ts b/std/node/_fs/promises/mod.ts
index 3cb81a422..4cc6462b9 100644
--- a/std/node/_fs/promises/mod.ts
+++ b/std/node/_fs/promises/mod.ts
@@ -1 +1,2 @@
export { writeFile } from "./_fs_writeFile.ts";
+export { readFile } from "./_fs_readFile.ts";