Skip to content

Commit 230d988

Browse files
Merge pull request #154 from csabascript/fix-node-resolver
Adding basedir to fix node resolver
2 parents 22a43a5 + 7bfffab commit 230d988

File tree

6 files changed

+139
-0
lines changed

6 files changed

+139
-0
lines changed

index.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,7 @@ Deps.prototype.walk = function (id, parent, cb) {
464464
var current = {
465465
id: file,
466466
filename: file,
467+
basedir: path.dirname(file),
467468
paths: self.paths,
468469
package: pkg,
469470
inNodeModules: parent.inNodeModules || !isTopLevel

test/files/resolve/bar/bar.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
var bar2 = require('./bar2');
2+
3+
module.exports = function () {
4+
return 'bar';
5+
};

test/files/resolve/bar/bar2.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = function () {
2+
return 'bar2';
3+
};

test/files/resolve/foo/baz/baz.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module.exports = function () {
2+
return 'baz';
3+
};

test/files/resolve/foo/foo.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
var bar = require('../bar/bar.js');
2+
var baz = require('./baz/baz.js');
3+
4+
module.exports = function () {
5+
return 'foo';
6+
};

test/resolve.js

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
var fs = require('fs');
2+
var path = require('path');
3+
4+
var mdeps = require('../');
5+
var test = require('tap').test;
6+
var nodeResolve = require('resolve');
7+
var browserResolve = require('browser-resolve');
8+
9+
var missing = path.join(__dirname, '/missing');
10+
11+
var files = {
12+
foo: path.join(__dirname, '/files/resolve/foo/foo.js'),
13+
bar: path.join(__dirname, '/files/resolve/bar/bar.js'),
14+
bar2: path.join(__dirname, '/files/resolve/bar/bar2.js'),
15+
baz: path.join(__dirname, '/files/resolve/foo/baz/baz.js')
16+
};
17+
18+
var sources = Object.keys(files)
19+
.reduce(function (acc, file) {
20+
acc[file] = fs.readFileSync(files[file], 'utf8');
21+
return acc;
22+
}, {});
23+
24+
var expectedRows = [
25+
{
26+
"deps": {},
27+
"file": files.baz,
28+
"id": files.baz,
29+
"source": sources.baz
30+
},
31+
{
32+
"deps": {},
33+
"file": files.bar2,
34+
"id": files.bar2,
35+
"source": sources.bar2
36+
},
37+
{
38+
"deps": {
39+
"./bar2": files.bar2
40+
},
41+
"file": files.bar,
42+
"id": files.bar,
43+
"source": sources.bar
44+
},
45+
{
46+
"deps": {
47+
"../bar/bar.js": files.bar,
48+
"./baz/baz.js": files.baz
49+
},
50+
"entry": true,
51+
"file": files.foo,
52+
"id": "foo",
53+
"source": sources.foo
54+
}
55+
];
56+
57+
test('browser resolve - missing', function (t) {
58+
t.plan(1);
59+
var d = mdeps({resolve: browserResolve});
60+
61+
d.end({id: 'missing', file: missing, entry: true});
62+
63+
d.on('end', function () {
64+
t.fail('errored');
65+
});
66+
d.on('error', function (err) {
67+
t.match(
68+
String(err),
69+
/Cannot find module .*/
70+
);
71+
});
72+
});
73+
74+
test('node resolve - missing', function (t) {
75+
t.plan(1);
76+
var d = mdeps({resolve: nodeResolve});
77+
78+
d.end({id: 'missing', file: missing, entry: true});
79+
80+
d.on('end', function () {
81+
t.fail('errored');
82+
});
83+
d.on('error', function (err) {
84+
t.match(
85+
String(err),
86+
/Cannot find module .*/
87+
);
88+
});
89+
});
90+
91+
test('browser resolve', function (t) {
92+
t.plan(1);
93+
var d = mdeps({resolve: browserResolve});
94+
95+
d.end({id: 'foo', file: files.foo, entry: true});
96+
97+
var rows = [];
98+
d.on('data', function (row) {rows.push(row)});
99+
d.on('end', function () {
100+
t.same(rows, expectedRows);
101+
});
102+
d.on('error', function () {
103+
t.fail('errored');
104+
});
105+
});
106+
107+
test('node resolve', function (t) {
108+
t.plan(1);
109+
var d = mdeps({resolve: nodeResolve});
110+
111+
d.end({id: 'foo', file: files.foo, entry: true});
112+
113+
var rows = [];
114+
d.on('data', function (row) {rows.push(row)});
115+
d.on('end', function () {
116+
t.same(rows, expectedRows);
117+
});
118+
d.on('error', function () {
119+
t.fail('errored');
120+
});
121+
});

0 commit comments

Comments
 (0)