Skip to content

Commit

Permalink
path: reduce type checking on some methods
Browse files Browse the repository at this point in the history
a465840 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: #1215
PR-URL: #1216
Reviewed-By: Rod Vagg <[email protected]>
  • Loading branch information
cjihrig committed Mar 20, 2015
1 parent 3b9eab9 commit 8de78e4
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 13 deletions.
10 changes: 0 additions & 10 deletions lib/path.js
Original file line number Diff line number Diff line change
Expand Up @@ -302,8 +302,6 @@ win32._makeLong = function(path) {


win32.dirname = function(path) {
assertPath(path);

var result = win32SplitPath(path),
root = result[0],
dir = result[1];
Expand All @@ -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');

Expand All @@ -338,7 +334,6 @@ win32.basename = function(path, ext) {


win32.extname = function(path) {
assertPath(path);
return win32SplitPath(path)[3];
};

Expand Down Expand Up @@ -536,8 +531,6 @@ posix._makeLong = function(path) {


posix.dirname = function(path) {
assertPath(path);

var result = posixSplitPath(path),
root = result[0],
dir = result[1];
Expand All @@ -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');

Expand All @@ -572,7 +563,6 @@ posix.basename = function(path, ext) {


posix.extname = function(path) {
assertPath(path);
return posixSplitPath(path)[3];
};

Expand Down
9 changes: 6 additions & 3 deletions test/parallel/test-path.js
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down

0 comments on commit 8de78e4

Please sign in to comment.