From 3cc724c9bae94c2f79dd4a902782a66f688a1e61 Mon Sep 17 00:00:00 2001 From: Luca Casonato Date: Mon, 22 Nov 2021 16:53:58 +0100 Subject: [PATCH] fix(runtime): support reading /proc using readFile (#12839) --- cli/tests/unit/read_file_test.ts | 13 ++++--------- cli/tests/unit/read_text_file_test.ts | 21 +++++++++++++++++++++ runtime/js/40_read_file.js | 15 ++++++++++++--- 3 files changed, 37 insertions(+), 12 deletions(-) diff --git a/cli/tests/unit/read_file_test.ts b/cli/tests/unit/read_file_test.ts index 9b8f5e6dfb..90a6abc2c5 100644 --- a/cli/tests/unit/read_file_test.ts +++ b/cli/tests/unit/read_file_test.ts @@ -105,15 +105,10 @@ unitTest( ); unitTest( - { permissions: { read: true } }, - async function readTextileWithAbortSignal() { - const ac = new AbortController(); - queueMicrotask(() => ac.abort()); - await assertRejects(async () => { - await Deno.readTextFile("cli/tests/testdata/fixture.json", { - signal: ac.signal, - }); - }); + { permissions: { read: true }, ignore: Deno.build.os !== "linux" }, + async function readFileProcFs() { + const data = await Deno.readFile("/proc/self/stat"); + assert(data.byteLength > 0); }, ); diff --git a/cli/tests/unit/read_text_file_test.ts b/cli/tests/unit/read_text_file_test.ts index 8a52831e03..1447fd028a 100644 --- a/cli/tests/unit/read_text_file_test.ts +++ b/cli/tests/unit/read_text_file_test.ts @@ -83,3 +83,24 @@ unitTest( assertEquals(resourcesBefore, Deno.resources()); }, ); + +unitTest( + { permissions: { read: true } }, + async function readTextFileWithAbortSignal() { + const ac = new AbortController(); + queueMicrotask(() => ac.abort()); + await assertRejects(async () => { + await Deno.readFile("cli/tests/testdata/fixture.json", { + signal: ac.signal, + }); + }); + }, +); + +unitTest( + { permissions: { read: true }, ignore: Deno.build.os !== "linux" }, + async function readTextFileProcFs() { + const data = await Deno.readTextFile("/proc/self/stat"); + assert(data.length > 0); + }, +); diff --git a/runtime/js/40_read_file.js b/runtime/js/40_read_file.js index 53ac9b08a6..5e90b523a6 100644 --- a/runtime/js/40_read_file.js +++ b/runtime/js/40_read_file.js @@ -4,13 +4,18 @@ ((window) => { const core = window.Deno.core; const { open, openSync } = window.__bootstrap.files; - const { readAllSyncSized, readAllInnerSized } = window.__bootstrap.io; + const { readAllSync, readAll, readAllSyncSized, readAllInnerSized } = + window.__bootstrap.io; function readFileSync(path) { const file = openSync(path); try { const { size } = file.statSync(); - return readAllSyncSized(file, size); + if (size === 0) { + return readAllSync(file); + } else { + return readAllSyncSized(file, size); + } } finally { file.close(); } @@ -20,7 +25,11 @@ const file = await open(path); try { const { size } = await file.stat(); - return await readAllInnerSized(file, size, options); + if (size === 0) { + return await readAll(file); + } else { + return await readAllInnerSized(file, size, options); + } } finally { file.close(); }