From 28620a1e066c36bdc22f3f0d66caf62203534730 Mon Sep 17 00:00:00 2001 From: Rongjian Zhang Date: Thu, 20 May 2021 21:01:53 +0800 Subject: [PATCH] test: improve coverage of fs internal utils Refs: https://coverage.nodejs.org/coverage-910efc2d9a69ac32/lib/internal/fs/utils.js.html#L634 --- .../test-fs-util-validateoffsetlength.js | 87 +++++++++++++++++++ .../test-fs-util-validateoffsetlengthwrite.js | 43 --------- 2 files changed, 87 insertions(+), 43 deletions(-) create mode 100644 test/parallel/test-fs-util-validateoffsetlength.js delete mode 100644 test/parallel/test-fs-util-validateoffsetlengthwrite.js diff --git a/test/parallel/test-fs-util-validateoffsetlength.js b/test/parallel/test-fs-util-validateoffsetlength.js new file mode 100644 index 00000000000000..28e087d33aec7b --- /dev/null +++ b/test/parallel/test-fs-util-validateoffsetlength.js @@ -0,0 +1,87 @@ +// Flags: --expose-internals +'use strict'; + +const common = require('../common'); + +const assert = require('assert'); +const { + validateOffsetLengthRead, + validateOffsetLengthWrite, +} = require('internal/fs/utils'); + +{ + const offset = -1; + assert.throws( + () => validateOffsetLengthRead(offset, 0, 0), + common.expectsError({ + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "offset" is out of range. ' + + `It must be >= 0. Received ${offset}` + }) + ); +} + +{ + const length = -1; + assert.throws( + () => validateOffsetLengthRead(0, length, 0), + common.expectsError({ + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "length" is out of range. ' + + `It must be >= 0. Received ${length}` + }) + ); +} + +{ + const offset = 1; + const length = 1; + const byteLength = offset + length - 1; + assert.throws( + () => validateOffsetLengthRead(offset, length, byteLength), + common.expectsError({ + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "length" is out of range. ' + + `It must be <= ${byteLength - offset}. Received ${length}` + }) + ); +} + +// Most platforms don't allow reads or writes >= 2 GB. +// See https://github.com/libuv/libuv/pull/1501. +const kIoMaxLength = 2 ** 31 - 1; + +// RangeError when offset > byteLength +{ + const offset = 100; + const length = 100; + const byteLength = 50; + assert.throws( + () => validateOffsetLengthWrite(offset, length, byteLength), + common.expectsError({ + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "offset" is out of range. ' + + `It must be <= ${byteLength}. Received ${offset}` + }) + ); +} + +// RangeError when byteLength < kIoMaxLength, and length > byteLength - offset. +{ + const offset = kIoMaxLength - 150; + const length = 200; + const byteLength = kIoMaxLength - 100; + assert.throws( + () => validateOffsetLengthWrite(offset, length, byteLength), + common.expectsError({ + code: 'ERR_OUT_OF_RANGE', + name: 'RangeError', + message: 'The value of "length" is out of range. ' + + `It must be <= ${byteLength - offset}. Received ${length}` + }) + ); +} diff --git a/test/parallel/test-fs-util-validateoffsetlengthwrite.js b/test/parallel/test-fs-util-validateoffsetlengthwrite.js deleted file mode 100644 index 57fb7a9bc70674..00000000000000 --- a/test/parallel/test-fs-util-validateoffsetlengthwrite.js +++ /dev/null @@ -1,43 +0,0 @@ -// Flags: --expose-internals -'use strict'; - -require('../common'); - -const assert = require('assert'); -const { validateOffsetLengthWrite } = require('internal/fs/utils'); - -// Most platforms don't allow reads or writes >= 2 GB. -// See https://github.com/libuv/libuv/pull/1501. -const kIoMaxLength = 2 ** 31 - 1; - -// RangeError when offset > byteLength -{ - const offset = 100; - const length = 100; - const byteLength = 50; - assert.throws( - () => validateOffsetLengthWrite(offset, length, byteLength), - { - code: 'ERR_OUT_OF_RANGE', - name: 'RangeError', - message: 'The value of "offset" is out of range. ' + - `It must be <= ${byteLength}. Received ${offset}` - } - ); -} - -// RangeError when byteLength < kIoMaxLength, and length > byteLength - offset. -{ - const offset = kIoMaxLength - 150; - const length = 200; - const byteLength = kIoMaxLength - 100; - assert.throws( - () => validateOffsetLengthWrite(offset, length, byteLength), - { - code: 'ERR_OUT_OF_RANGE', - name: 'RangeError', - message: 'The value of "length" is out of range. ' + - `It must be <= ${byteLength - offset}. Received ${length}` - } - ); -}