Skip to content

Commit ba2e9f2

Browse files
committed
Merge pull request #81 from pmowrer/bug/wrong-__dirname
Fix __dirname sometimes pointing to wrong package
2 parents 8e34e42 + 3ebfa38 commit ba2e9f2

File tree

10 files changed

+30
-10
lines changed

10 files changed

+30
-10
lines changed

index.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,11 +146,12 @@ Deps.prototype.resolve = function (id, parent, cb) {
146146
});
147147
}
148148

149-
var pkgdir;
150149
parent.packageFilter = function (p, x) {
151-
pkgdir = path.dirname(x);
152-
if (opts.packageFilter) return opts.packageFilter(p, x);
153-
else return p;
150+
var pkgdir = path.dirname(x);
151+
if (opts.packageFilter) p = opts.packageFilter(p, x);
152+
p.__dirname = pkgdir;
153+
154+
return p;
154155
};
155156

156157
if (opts.extensions) parent.extensions = opts.extensions;
@@ -163,7 +164,6 @@ Deps.prototype.resolve = function (id, parent, cb) {
163164
+ parent.filename
164165
));
165166

166-
if (pkg && pkgdir) pkg.__dirname = pkgdir;
167167
if (!pkg || !pkg.__dirname) {
168168
self.lookupPackage(file, function (err, p) {
169169
if (err) return cb(err);

test/pkg.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
var mdeps = require('../');
22
var test = require('tape');
33
var path = require('path');
4+
var fs = require('fs');
45

5-
var pkg = require('./pkg/package.json');
6-
pkg.__dirname = path.join(__dirname, '/pkg');
6+
var dirname = path.join(__dirname, '/pkg');
77

88
test('pkg', function (t) {
9-
t.plan(1);
9+
t.plan(4);
1010

1111
var d = mdeps();
1212
d.on('package', function (pkg_) {
13+
var pkg = JSON.parse(fs.readFileSync(dirname + pkg_.dir + '/package.json'));
14+
pkg.__dirname = dirname + pkg_.dir;
15+
1316
t.deepEqual(pkg_, pkg);
1417
});
1518
d.end(path.join(__dirname, '/pkg/main.js'));

test/pkg/main.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
1-
console.log(555)
1+
require('pkga');
2+
require('pkgb');

test/pkg/node_modules/pkga/main.js

Whitespace-only changes.

test/pkg/node_modules/pkga/package.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/pkg/node_modules/pkgb/main.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/pkg/node_modules/pkgb/node_modules/pkgc/main.js

Whitespace-only changes.

test/pkg/node_modules/pkgb/node_modules/pkgc/package.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/pkg/node_modules/pkgb/package.json

Lines changed: 4 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/pkg/package.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,4 @@
1-
{ "beep": "boop" }
1+
{
2+
"dir": "",
3+
"main": "index.js"
4+
}

0 commit comments

Comments
 (0)