summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorZach Bjornson <zbbjornson@gmail.com>2019-03-18 11:27:13 -0700
committerRich Trott <rtrott@gmail.com>2019-08-16 22:09:27 -0700
commit0bbda5e5aede9b264a3c6188529c9dbed1ec9719 (patch)
treed5b87a4fe8a7e9e12f91fc71f983c5d0a661c33d /test
parent91a4cb71753b7c7012022e3e67c7a1f16f3b5e80 (diff)
downloadandroid-node-v8-0bbda5e5aede9b264a3c6188529c9dbed1ec9719.tar.gz
android-node-v8-0bbda5e5aede9b264a3c6188529c9dbed1ec9719.tar.bz2
android-node-v8-0bbda5e5aede9b264a3c6188529c9dbed1ec9719.zip
fs: allow int64 offset in fs.read/readSync/fd.read
Since v10.10.0, 'buf' can be any DataView, meaning the largest byteLength can be Float64Array.BYTES_PER_ELEMENT * kMaxLength = 17,179,869,176. 'offset' can now be up to 2**53 - 1. This makes it possible to tile reads into a large buffer. Breaking: now throws if read offset is not a safe int, is null or is undefined. Fixes https://github.com/nodejs/node/issues/26563 PR-URL: https://github.com/nodejs/node/pull/26572 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de> Reviewed-By: Ujjwal Sharma <usharma1998@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
Diffstat (limited to 'test')
-rw-r--r--test/parallel/test-fs-read-type.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/test/parallel/test-fs-read-type.js b/test/parallel/test-fs-read-type.js
index b51df51589..f5ac78a230 100644
--- a/test/parallel/test-fs-read-type.js
+++ b/test/parallel/test-fs-read-type.js
@@ -53,6 +53,20 @@ assert.throws(() => {
assert.throws(() => {
fs.read(fd,
Buffer.allocUnsafe(expected.length),
+ NaN,
+ expected.length,
+ 0,
+ common.mustNotCall());
+}, {
+ code: 'ERR_OUT_OF_RANGE',
+ name: 'RangeError',
+ message: 'The value of "offset" is out of range. It must be an integer. ' +
+ 'Received NaN'
+});
+
+assert.throws(() => {
+ fs.read(fd,
+ Buffer.allocUnsafe(expected.length),
0,
-1,
0,
@@ -106,6 +120,19 @@ assert.throws(() => {
assert.throws(() => {
fs.readSync(fd,
Buffer.allocUnsafe(expected.length),
+ NaN,
+ expected.length,
+ 0);
+}, {
+ code: 'ERR_OUT_OF_RANGE',
+ name: 'RangeError',
+ message: 'The value of "offset" is out of range. It must be an integer. ' +
+ 'Received NaN'
+});
+
+assert.throws(() => {
+ fs.readSync(fd,
+ Buffer.allocUnsafe(expected.length),
0,
-1,
0);