Browse Source

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>
v1.8.0-commit
cjihrig 10 years ago
parent
commit
8de78e470d
  1. 10
      lib/path.js
  2. 9
      test/parallel/test-path.js

10
lib/path.js

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

9
test/parallel/test-path.js

@ -270,13 +270,16 @@ typeErrorTests.forEach(function(test) {
fail(path.resolve, test); fail(path.resolve, test);
fail(path.normalize, test); fail(path.normalize, test);
fail(path.isAbsolute, test); fail(path.isAbsolute, test);
fail(path.dirname, test);
fail(path.relative, test, 'foo'); fail(path.relative, test, 'foo');
fail(path.relative, 'foo', test); fail(path.relative, 'foo', test);
fail(path.basename, test);
fail(path.extname, test);
fail(path.parse, 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 // undefined is a valid value as the second argument to basename
if (test !== undefined) { if (test !== undefined) {
fail(path.basename, 'foo', test); fail(path.basename, 'foo', test);

Loading…
Cancel
Save