diff --git a/test/parallel/test-fs-read.js b/test/parallel/test-fs-read.js index 531eba00d2847d..5c9e59795fc39f 100644 --- a/test/parallel/test-fs-read.js +++ b/test/parallel/test-fs-read.js @@ -78,13 +78,21 @@ assert.throws( } ); -['buffer', 'offset', 'length'].forEach((option) => - assert.throws( - () => fs.read(fd, { - [option]: null - }), - `not throws when options.${option} is null` - )); +assert.throws( + () => fs.read(fd, { buffer: null }, common.mustNotCall()), + /TypeError: Cannot read property 'byteLength' of null/, + 'throws when options.buffer is null' +); + +assert.throws( + () => fs.readSync(fd, { buffer: null }), + { + name: 'TypeError', + message: 'The "buffer" argument must be an instance of Buffer, ' + + 'TypedArray, or DataView. Received an instance of Object', + }, + 'throws when options.buffer is null' +); assert.throws( () => fs.read(null, Buffer.alloc(1), 0, 1, 0), diff --git a/test/parallel/test-fs-readfile.js b/test/parallel/test-fs-readfile.js index a081eec099890d..c0dd16255b44fd 100644 --- a/test/parallel/test-fs-readfile.js +++ b/test/parallel/test-fs-readfile.js @@ -52,6 +52,23 @@ for (const e of fileInfo) { assert.deepStrictEqual(buf, e.contents); })); } +// Test readFile size too large +{ + const kIoMaxLength = 2 ** 31 - 1; + + const file = path.join(tmpdir.path, `${prefix}-too-large.txt`); + fs.writeFileSync(file, Buffer.from('0')); + fs.truncateSync(file, kIoMaxLength + 1); + + fs.readFile(file, common.expectsError({ + code: 'ERR_FS_FILE_TOO_LARGE', + name: 'RangeError', + })); + assert.throws(() => { + fs.readFileSync(file); + }, { code: 'ERR_FS_FILE_TOO_LARGE', name: 'RangeError' }); +} + { // Test cancellation, before const signal = AbortSignal.abort();