path: reduce type checking on some methods

a465840313f548b913eb2bd8ea3d26c2ab5dcebb added strict type
checking for the methods in the path module. However, dirname(),
basename(), and extname() actually had some undocumented uses
in the wild. This commit loosens the type checking on those
methods.

Fixes: https://github.com/iojs/io.js/issues/1215
PR-URL: https://github.com/iojs/io.js/pull/1216
Reviewed-By: Rod Vagg <rod@vagg.org>
This commit is contained in:
cjihrig 2015-03-19 20:55:31 -04:00
parent 3b9eab9779
commit 8de78e470d
2 changed files with 6 additions and 13 deletions

View File

@ -302,8 +302,6 @@ win32._makeLong = function(path) {
win32.dirname = function(path) {
assertPath(path);
var result = win32SplitPath(path),
root = result[0],
dir = result[1];
@ -323,8 +321,6 @@ win32.dirname = function(path) {
win32.basename = function(path, ext) {
assertPath(path);
if (ext !== undefined && typeof ext !== 'string')
throw new TypeError('ext must be a string');
@ -338,7 +334,6 @@ win32.basename = function(path, ext) {
win32.extname = function(path) {
assertPath(path);
return win32SplitPath(path)[3];
};
@ -536,8 +531,6 @@ posix._makeLong = function(path) {
posix.dirname = function(path) {
assertPath(path);
var result = posixSplitPath(path),
root = result[0],
dir = result[1];
@ -557,8 +550,6 @@ posix.dirname = function(path) {
posix.basename = function(path, ext) {
assertPath(path);
if (ext !== undefined && typeof ext !== 'string')
throw new TypeError('ext must be a string');
@ -572,7 +563,6 @@ posix.basename = function(path, ext) {
posix.extname = function(path) {
assertPath(path);
return posixSplitPath(path)[3];
};

View File

@ -270,13 +270,16 @@ typeErrorTests.forEach(function(test) {
fail(path.resolve, test);
fail(path.normalize, test);
fail(path.isAbsolute, test);
fail(path.dirname, test);
fail(path.relative, test, 'foo');
fail(path.relative, 'foo', test);
fail(path.basename, test);
fail(path.extname, test);
fail(path.parse, test);
// These methods should throw a TypeError, but do not for backwards
// compatibility. Uncommenting these lines in the future should be a goal.
// fail(path.dirname, test);
// fail(path.basename, test);
// fail(path.extname, test);
// undefined is a valid value as the second argument to basename
if (test !== undefined) {
fail(path.basename, 'foo', test);