summaryrefslogtreecommitdiff
path: root/test/parallel/test-fs-fchown.js
diff options
context:
space:
mode:
authorRuben Bridgewater <ruben@bridgewater.de>2018-03-19 14:17:50 +0100
committerRuben Bridgewater <ruben@bridgewater.de>2018-03-25 01:45:40 +0100
commitacc3c770e7717673ee87fa37076fc50fcb91e4ea (patch)
tree278e9535d850eb1ae97d0dfd2bfefca3408d3a77 /test/parallel/test-fs-fchown.js
parent058e7fb8e66cafae700c5cb437d08572150fa69f (diff)
downloadandroid-node-v8-acc3c770e7717673ee87fa37076fc50fcb91e4ea.tar.gz
android-node-v8-acc3c770e7717673ee87fa37076fc50fcb91e4ea.tar.bz2
android-node-v8-acc3c770e7717673ee87fa37076fc50fcb91e4ea.zip
fs: fix error handling
Right now there are multiple cases where the validated entry would not be returned or a wrong error is thrown. This fixes both cases. PR-URL: https://github.com/nodejs/node/pull/19445 Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Matteo Collina <matteo.collina@gmail.com> Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net>
Diffstat (limited to 'test/parallel/test-fs-fchown.js')
-rw-r--r--test/parallel/test-fs-fchown.js89
1 files changed, 39 insertions, 50 deletions
diff --git a/test/parallel/test-fs-fchown.js b/test/parallel/test-fs-fchown.js
index a7e6bf6cbc..500c06a47c 100644
--- a/test/parallel/test-fs-fchown.js
+++ b/test/parallel/test-fs-fchown.js
@@ -1,57 +1,46 @@
'use strict';
-const common = require('../common');
+require('../common');
+const assert = require('assert');
const fs = require('fs');
-['', false, null, undefined, {}, [], Infinity, -1].forEach((i) => {
- common.expectsError(
- () => fs.fchown(i),
- {
- code: 'ERR_INVALID_ARG_TYPE',
- type: TypeError,
- message: 'The "fd" argument must be of type integer'
- }
- );
- common.expectsError(
- () => fs.fchownSync(i),
- {
- code: 'ERR_INVALID_ARG_TYPE',
- type: TypeError,
- message: 'The "fd" argument must be of type integer'
- }
- );
+function test(input, errObj) {
+ assert.throws(() => fs.fchown(input), errObj);
+ assert.throws(() => fs.fchownSync(input), errObj);
+ errObj.message = errObj.message.replace('fd', 'uid');
+ assert.throws(() => fs.fchown(1, input), errObj);
+ assert.throws(() => fs.fchownSync(1, input), errObj);
+ errObj.message = errObj.message.replace('uid', 'gid');
+ assert.throws(() => fs.fchown(1, 1, input), errObj);
+ assert.throws(() => fs.fchownSync(1, 1, input), errObj);
+}
- common.expectsError(
- () => fs.fchown(1, i),
- {
- code: 'ERR_INVALID_ARG_TYPE',
- type: TypeError,
- message: 'The "uid" argument must be of type integer'
- }
- );
- common.expectsError(
- () => fs.fchownSync(1, i),
- {
- code: 'ERR_INVALID_ARG_TYPE',
- type: TypeError,
- message: 'The "uid" argument must be of type integer'
- }
- );
+['', false, null, undefined, {}, []].forEach((input) => {
+ const errObj = {
+ code: 'ERR_INVALID_ARG_TYPE',
+ name: 'TypeError [ERR_INVALID_ARG_TYPE]',
+ message: 'The "fd" argument must be of type number. Received type ' +
+ typeof input
+ };
+ test(input, errObj);
+});
+
+[Infinity, NaN].forEach((input) => {
+ const errObj = {
+ code: 'ERR_OUT_OF_RANGE',
+ name: 'RangeError [ERR_OUT_OF_RANGE]',
+ message: 'The value of "fd" is out of range. It must be an integer. ' +
+ `Received ${input}`
+ };
+ test(input, errObj);
+});
- common.expectsError(
- () => fs.fchown(1, 1, i),
- {
- code: 'ERR_INVALID_ARG_TYPE',
- type: TypeError,
- message: 'The "gid" argument must be of type integer'
- }
- );
- common.expectsError(
- () => fs.fchownSync(1, 1, i),
- {
- code: 'ERR_INVALID_ARG_TYPE',
- type: TypeError,
- message: 'The "gid" argument must be of type integer'
- }
- );
+[-1, 2 ** 32].forEach((input) => {
+ const errObj = {
+ code: 'ERR_OUT_OF_RANGE',
+ name: 'RangeError [ERR_OUT_OF_RANGE]',
+ message: 'The value of "fd" is out of range. It must be ' +
+ `>= 0 && < 4294967296. Received ${input}`
+ };
+ test(input, errObj);
});