diff options
author | Luca Casonato <hello@lcas.dev> | 2021-11-22 16:25:42 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-22 16:25:42 +0100 |
commit | 429c773a2e729a56a551a0b645fd5cbf7ef0fe99 (patch) | |
tree | e46d8a4871eeb57ac2d5bf29ededb340e58ffd5f /cli | |
parent | 86e52383846eae407787c145e3e8cf09354f2a08 (diff) |
tests: extend readFile file length during read (#12835)
This commit adds some tests that demonstrate that Deno.readFile reads
the entire file, even if the read file is extended during read.
Diffstat (limited to 'cli')
-rw-r--r-- | cli/tests/unit/read_file_test.ts | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/cli/tests/unit/read_file_test.ts b/cli/tests/unit/read_file_test.ts index 0ad8dd908..9b8f5e6df 100644 --- a/cli/tests/unit/read_file_test.ts +++ b/cli/tests/unit/read_file_test.ts @@ -1,4 +1,5 @@ // Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. +import { writeAllSync } from "../../../test_util/std/io/util.ts"; import { assert, assertEquals, @@ -115,3 +116,42 @@ unitTest( }); }, ); + +unitTest( + { permissions: { read: true, write: true } }, + async function readFileExtendedDuringRead() { + // Write 128MB file + const filename = Deno.makeTempDirSync() + "/test.txt"; + const data = new Uint8Array(1024 * 1024 * 128); + Deno.writeFileSync(filename, data); + const promise = Deno.readFile(filename); + queueMicrotask(() => { + // Append 128MB to file + const f = Deno.openSync(filename, { append: true }); + writeAllSync(f, data); + f.close(); + }); + const read = await promise; + assertEquals(read.byteLength, data.byteLength * 2); + }, +); + +unitTest( + { permissions: { read: true, write: true } }, + async function readFile0LengthExtendedDuringRead() { + // Write 0 byte file + const filename = Deno.makeTempDirSync() + "/test.txt"; + const first = new Uint8Array(0); + const second = new Uint8Array(1024 * 1024 * 128); + Deno.writeFileSync(filename, first); + const promise = Deno.readFile(filename); + queueMicrotask(() => { + // Append 128MB to file + const f = Deno.openSync(filename, { append: true }); + writeAllSync(f, second); + f.close(); + }); + const read = await promise; + assertEquals(read.byteLength, second.byteLength); + }, +); |