path: join throws TypeError on non-string args
lib/path.js: - throws a TypeError on the filter if the argument is not a string. test/simple/test-path.js: - removed the test to check if non-string types are filtered. - added a test to check if path.join throws TypeError on arguments that are not strings.
This commit is contained in:
parent
ebc95f0716
commit
055110dab0
@ -198,6 +198,9 @@ if (isWindows) {
|
|||||||
// windows version
|
// windows version
|
||||||
exports.join = function() {
|
exports.join = function() {
|
||||||
function f(p) {
|
function f(p) {
|
||||||
|
if (typeof p !== 'string') {
|
||||||
|
throw new TypeError('Arguments to join must be strings');
|
||||||
|
}
|
||||||
return p && typeof p === 'string';
|
return p && typeof p === 'string';
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,6 +352,9 @@ if (isWindows) {
|
|||||||
exports.join = function() {
|
exports.join = function() {
|
||||||
var paths = Array.prototype.slice.call(arguments, 0);
|
var paths = Array.prototype.slice.call(arguments, 0);
|
||||||
return exports.normalize(paths.filter(function(p, index) {
|
return exports.normalize(paths.filter(function(p, index) {
|
||||||
|
if (typeof p !== 'string') {
|
||||||
|
throw new TypeError('Arguments to join must be strings');
|
||||||
|
}
|
||||||
return p && typeof p === 'string';
|
return p && typeof p === 'string';
|
||||||
}).join('/'));
|
}).join('/'));
|
||||||
};
|
};
|
||||||
|
@ -218,9 +218,7 @@ var joinTests =
|
|||||||
[['/', '//foo'], '/foo'],
|
[['/', '//foo'], '/foo'],
|
||||||
[['/', '', '/foo'], '/foo'],
|
[['/', '', '/foo'], '/foo'],
|
||||||
[['', '/', 'foo'], '/foo'],
|
[['', '/', 'foo'], '/foo'],
|
||||||
[['', '/', '/foo'], '/foo'],
|
[['', '/', '/foo'], '/foo']
|
||||||
// filtration of non-strings.
|
|
||||||
[['x', true, 7, 'y', null, {}], 'x/y']
|
|
||||||
];
|
];
|
||||||
|
|
||||||
// Windows-specific join tests
|
// Windows-specific join tests
|
||||||
@ -284,6 +282,13 @@ joinTests.forEach(function(test) {
|
|||||||
// assert.equal(actual, expected, message);
|
// assert.equal(actual, expected, message);
|
||||||
});
|
});
|
||||||
assert.equal(failures.length, 0, failures.join(''));
|
assert.equal(failures.length, 0, failures.join(''));
|
||||||
|
var joinThrowTests = [true, false, 7, null, {}, undefined, [], NaN];
|
||||||
|
joinThrowTests.forEach(function(test) {
|
||||||
|
assert.throws(function() {
|
||||||
|
path.join(test);
|
||||||
|
}, TypeError);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// path normalize tests
|
// path normalize tests
|
||||||
if (isWindows) {
|
if (isWindows) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user