Skip to content

Commit e83630d

Browse files
committed
Use path.dirname to walk up looking for a package.json
This fixes async resolution when looking for a package.json file. Previously a regex was being used that was not allowing the recursive behavior the code is attempting. Replacing with path.dirname fixes the issue. Fixes #76
1 parent a225602 commit e83630d

File tree

5 files changed

+13
-7
lines changed

5 files changed

+13
-7
lines changed

lib/async.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ module.exports = function resolve (x, opts, cb) {
106106
isFile(pkgfile, function (err, ex) {
107107
// on err, ex is false
108108
if (!ex) return loadpkg(
109-
dir.replace(/[\\\/]*[^\\\/]+[\\\/]*/, ''), cb
109+
path.dirname(dir), cb
110110
);
111111

112112
readFile(pkgfile, function (err, body) {

test/pathfilter.js

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ var test = require('tape');
22
var resolve = require('../');
33

44
test('#62: deep module references and the pathFilter', function(t){
5-
t.plan(6);
5+
t.plan(9);
66

77
var resolverDir = __dirname + '/pathfilter/deep_ref';
88
var pathFilter = function(pkg, x, remainder){
@@ -14,9 +14,18 @@ test('#62: deep module references and the pathFilter', function(t){
1414

1515
resolve('deep/ref', { basedir : resolverDir }, function (err, res, pkg) {
1616
if (err) t.fail(err);
17+
1718
t.equal(pkg.version, "1.2.3");
1819
t.equal(res, resolverDir + '/node_modules/deep/ref.js');
1920
});
21+
22+
resolve('deep/deeper/ref', { basedir: resolverDir },
23+
function(err, res, pkg) {
24+
if(err) t.fail(err);
25+
t.notEqual(pkg, undefined);
26+
t.equal(pkg.version, "1.2.3");
27+
t.equal(res, resolverDir + '/node_modules/deep/deeper/ref.js');
28+
});
2029

2130
resolve('deep/ref', { basedir : resolverDir, pathFilter : pathFilter },
2231
function (err, res, pkg) {

test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js

Whitespace-only changes.

test/precedence.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,12 @@ var test = require('tape');
33
var resolve = require('../');
44

55
test('precedence', function (t) {
6-
t.plan(3);
6+
t.plan(2);
77
var dir = path.join(__dirname, 'precedence/aaa');
88

99
resolve('./', { basedir : dir }, function (err, res, pkg) {
1010
t.ifError(err);
1111
t.equal(res, path.join(dir, 'index.js'));
12-
t.equal(pkg, undefined);
1312
});
1413
});
1514

test/resolver.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ var test = require('tape');
33
var resolve = require('../');
44

55
test('async foo', function (t) {
6-
t.plan(9);
6+
t.plan(7);
77
var dir = __dirname + '/resolver';
88

99
resolve('./foo', { basedir : dir }, function (err, res, pkg) {
1010
if (err) t.fail(err);
1111
t.equal(res, dir + '/foo.js');
12-
t.equal(pkg, undefined);
1312
});
1413

1514
resolve('./foo.js', { basedir : dir }, function (err, res, pkg) {
1615
if (err) t.fail(err);
1716
t.equal(res, dir + '/foo.js');
18-
t.equal(pkg, undefined);
1917
});
2018

2119
resolve('./foo', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {

0 commit comments

Comments
 (0)