path: use internal/errors.js

PR-URL: https://github.com/nodejs/node/pull/11319
Ref: https://github.com/nodejs/node/issues/11273
Reviewed-By: Refael Ackermann <refack@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
This commit is contained in:
Sebastian Van Sande 2017-02-11 20:32:16 +01:00 committed by Michael Dawson
parent 4c5cbb7c83
commit dcfbbacba8
4 changed files with 25 additions and 35 deletions

View File

@ -21,11 +21,11 @@
'use strict'; 'use strict';
const inspect = require('util').inspect; const errors = require('internal/errors');
function assertPath(path) { function assertPath(path) {
if (typeof path !== 'string') { if (typeof path !== 'string') {
throw new TypeError('Path must be a string. Received ' + inspect(path)); throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'path', 'string');
} }
} }
@ -816,7 +816,7 @@ const win32 = {
basename: function basename(path, ext) { basename: function basename(path, ext) {
if (ext !== undefined && typeof ext !== 'string') if (ext !== undefined && typeof ext !== 'string')
throw new TypeError('"ext" argument must be a string'); throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'ext', 'string');
assertPath(path); assertPath(path);
var start = 0; var start = 0;
var end = -1; var end = -1;
@ -959,9 +959,8 @@ const win32 = {
format: function format(pathObject) { format: function format(pathObject) {
if (pathObject === null || typeof pathObject !== 'object') { if (pathObject === null || typeof pathObject !== 'object') {
throw new TypeError( throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'pathObject', 'Object',
`Parameter "pathObject" must be an object, not ${typeof pathObject}` typeof pathObject);
);
} }
return _format('\\', pathObject); return _format('\\', pathObject);
}, },
@ -1372,7 +1371,7 @@ const posix = {
basename: function basename(path, ext) { basename: function basename(path, ext) {
if (ext !== undefined && typeof ext !== 'string') if (ext !== undefined && typeof ext !== 'string')
throw new TypeError('"ext" argument must be a string'); throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'ext', 'string');
assertPath(path); assertPath(path);
var start = 0; var start = 0;
@ -1503,9 +1502,8 @@ const posix = {
format: function format(pathObject) { format: function format(pathObject) {
if (pathObject === null || typeof pathObject !== 'object') { if (pathObject === null || typeof pathObject !== 'object') {
throw new TypeError( throw new errors.TypeError('ERR_INVALID_ARG_TYPE', 'pathObject', 'Object',
`Parameter "pathObject" must be an object, not ${typeof pathObject}` typeof pathObject);
);
} }
return _format('/', pathObject); return _format('/', pathObject);
}, },

View File

@ -16,7 +16,7 @@ assert.throws(function() {
assert.throws(function() { assert.throws(function() {
fs.watchFile(new Object(), common.noop); fs.watchFile(new Object(), common.noop);
}, /Path must be a string/); }, common.expectsError({code: 'ERR_INVALID_ARG_TYPE', type: TypeError}));
const enoentFile = path.join(common.tmpDir, 'non-existent-file'); const enoentFile = path.join(common.tmpDir, 'non-existent-file');
const expectedStatObject = new fs.Stats( const expectedStatObject = new fs.Stats(

View File

@ -20,7 +20,7 @@
// USE OR OTHER DEALINGS IN THE SOFTWARE. // USE OR OTHER DEALINGS IN THE SOFTWARE.
'use strict'; 'use strict';
require('../common'); const common = require('../common');
const assert = require('assert'); const assert = require('assert');
const path = require('path'); const path = require('path');
@ -88,29 +88,21 @@ const unixSpecialCaseFormatTests = [
[{}, ''] [{}, '']
]; ];
const expectedMessage = common.expectsError({
code: 'ERR_INVALID_ARG_TYPE',
type: TypeError
});
const errors = [ const errors = [
{method: 'parse', input: [null], {method: 'parse', input: [null], message: expectedMessage},
message: /^TypeError: Path must be a string\. Received null$/}, {method: 'parse', input: [{}], message: expectedMessage},
{method: 'parse', input: [{}], {method: 'parse', input: [true], message: expectedMessage},
message: /^TypeError: Path must be a string\. Received {}$/}, {method: 'parse', input: [1], message: expectedMessage},
{method: 'parse', input: [true], {method: 'parse', input: [], message: expectedMessage},
message: /^TypeError: Path must be a string\. Received true$/}, {method: 'format', input: [null], message: expectedMessage},
{method: 'parse', input: [1], {method: 'format', input: [''], message: expectedMessage},
message: /^TypeError: Path must be a string\. Received 1$/}, {method: 'format', input: [true], message: expectedMessage},
{method: 'parse', input: [], {method: 'format', input: [1], message: expectedMessage},
message: /^TypeError: Path must be a string\. Received undefined$/},
{method: 'format', input: [null],
message:
/^TypeError: Parameter "pathObject" must be an object, not object$/},
{method: 'format', input: [''],
message:
/^TypeError: Parameter "pathObject" must be an object, not string$/},
{method: 'format', input: [true],
message:
/^TypeError: Parameter "pathObject" must be an object, not boolean$/},
{method: 'format', input: [1],
message:
/^TypeError: Parameter "pathObject" must be an object, not number$/},
]; ];
checkParseFormat(path.win32, winPaths); checkParseFormat(path.win32, winPaths);

View File

@ -369,7 +369,7 @@ function fail(fn) {
assert.throws(() => { assert.throws(() => {
fn.apply(null, args); fn.apply(null, args);
}, TypeError); }, common.expectsError({code: 'ERR_INVALID_ARG_TYPE', type: TypeError}));
} }
typeErrorTests.forEach((test) => { typeErrorTests.forEach((test) => {