From 8de78e470d2e291454e2184d7f206c70d4cb8c97 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Thu, 19 Mar 2015 20:55:31 -0400 Subject: [PATCH] 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 --- lib/path.js | 10 ---------- test/parallel/test-path.js | 9 ++++++--- 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/lib/path.js b/lib/path.js index 5156e1f40..b7e28b222 100644 --- a/lib/path.js +++ b/lib/path.js @@ -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]; }; diff --git a/test/parallel/test-path.js b/test/parallel/test-path.js index e1bbe8ae7..e0e9c5d56 100644 --- a/test/parallel/test-path.js +++ b/test/parallel/test-path.js @@ -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); -- 2.34.1