Browse Source

FIX path.dirname('/tmp') => '/'.

Previously path.dirname('/tmp') incorrectly returned '.'.

Unfortunately module.js incorrectly thinks dirname('/a/b/') should
yield '/a/b', so I can't strip trailing slashes yet. Once module.js
is fixed, then the commented-out code should be activated and a test
written for it.
v0.7.4-release
rentzsch 15 years ago
committed by Ryan Dahl
parent
commit
36a45c4e0d
  1. 15
      lib/path.js
  2. 3
      test/simple/test-path.js

15
lib/path.js

@ -38,7 +38,20 @@ exports.normalize = function (path, keepBlanks) {
}; };
exports.dirname = function (path) { exports.dirname = function (path) {
return path && path.substr(0, path.lastIndexOf("/")) || "."; // Can't strip trailing slashes since module.js incorrectly thinks
// dirname('/a/b/') should yield '/a/b' instead of '/a'.
// if (path.length > 1 && '/' === path[path.length-1]) {
// path = path.replace(/\/+$/, '');
// }
var lastSlash = path.lastIndexOf('/');
switch (lastSlash) {
case -1:
return '.';
case 0:
return '/';
default:
return path.substring(0, lastSlash);
}
}; };
exports.filename = function () { exports.filename = function () {

3
test/simple/test-path.js

@ -7,6 +7,9 @@ assert.equal(path.basename(f), "test-path.js");
assert.equal(path.basename(f, ".js"), "test-path"); assert.equal(path.basename(f, ".js"), "test-path");
assert.equal(path.extname(f), ".js"); assert.equal(path.extname(f), ".js");
assert.equal(path.dirname(f).substr(-11), "test/simple"); assert.equal(path.dirname(f).substr(-11), "test/simple");
assert.equal(path.dirname("/a/b"), "/a");
assert.equal(path.dirname("/a"), "/");
assert.equal(path.dirname("/"), "/");
path.exists(f, function (y) { assert.equal(y, true) }); path.exists(f, function (y) { assert.equal(y, true) });
assert.equal(path.join(".", "fixtures/b", "..", "/b/c.js"), "fixtures/b/c.js"); assert.equal(path.join(".", "fixtures/b", "..", "/b/c.js"), "fixtures/b/c.js");

Loading…
Cancel
Save