Skip to content

Commit 4c9b260

Browse files
committed
[Fix] Make behavior consistent with require.resolve() for "shadowed" core modules
Backports #148 into v1.
1 parent da345f3 commit 4c9b260

File tree

7 files changed

+42
-23
lines changed

7 files changed

+42
-23
lines changed

lib/async.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ module.exports = function resolve(x, options, callback) {
7373
} else loadAsFile(res, opts.package, onfile);
7474
} else loadNodeModules(x, basedir, function (err, n, pkg) {
7575
if (err) cb(err);
76-
else if (n) cb(null, n, pkg);
7776
else if (core[x]) return cb(null, x);
77+
else if (n) cb(null, n, pkg);
7878
else {
7979
var moduleError = new Error("Cannot find module '" + x + "' from '" + parent + "'");
8080
moduleError.code = 'MODULE_NOT_FOUND';

lib/sync.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,8 @@ module.exports = function (x, options) {
5959
if (x === '..' || x.slice(-1) === '/') res += '/';
6060
var m = loadAsFileSync(res) || loadAsDirectorySync(res);
6161
if (m) return m;
62+
} else if (core[x]) {
63+
return x;
6264
} else {
6365
var n = loadNodeModulesSync(x, absoluteStart);
6466
if (n) return n;

test/resolver.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -283,17 +283,6 @@ test('without basedir', function (t) {
283283
});
284284
});
285285

286-
test('#25: node modules with the same name as node stdlib modules', function (t) {
287-
t.plan(1);
288-
289-
var resolverDir = path.join(__dirname, 'resolver/punycode');
290-
291-
resolve('punycode', { basedir: resolverDir }, function (err, res, pkg) {
292-
if (err) t.fail(err);
293-
t.equal(res, path.join(resolverDir, 'node_modules/punycode/index.js'));
294-
});
295-
});
296-
297286
test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
298287
t.plan(2);
299288

test/resolver_sync.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -184,17 +184,6 @@ test('incorrect main', function (t) {
184184
t.end();
185185
});
186186

187-
test('#25: node modules with the same name as node stdlib modules', function (t) {
188-
var resolverDir = path.join(__dirname, 'resolver/punycode');
189-
190-
t.equal(
191-
resolve.sync('punycode', { basedir: resolverDir }),
192-
path.join(resolverDir, 'node_modules/punycode/index.js')
193-
);
194-
195-
t.end();
196-
});
197-
198187
var stubStatSync = function stubStatSync(fn) {
199188
var fs = require('fs');
200189
var statSync = fs.statSync;

test/shadowed_core.js

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
var test = require('tape');
2+
var resolve = require('../');
3+
var path = require('path');
4+
5+
test('shadowed core modules still return core module', function (t) {
6+
t.plan(2);
7+
8+
resolve('util', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) {
9+
t.ifError(err);
10+
t.equal(res, 'util');
11+
});
12+
});
13+
14+
test('shadowed core modules still return core module [sync]', function (t) {
15+
t.plan(1);
16+
17+
var res = resolve.sync('util', { basedir: path.join(__dirname, 'shadowed_core') });
18+
19+
t.equal(res, 'util');
20+
});
21+
22+
test('shadowed core modules return shadow when appending `/`', function (t) {
23+
t.plan(2);
24+
25+
resolve('util/', { basedir: path.join(__dirname, 'shadowed_core') }, function (err, res) {
26+
t.ifError(err);
27+
t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
28+
});
29+
});
30+
31+
test('shadowed core modules return shadow when appending `/` [sync]', function (t) {
32+
t.plan(1);
33+
34+
var res = resolve.sync('util/', { basedir: path.join(__dirname, 'shadowed_core') });
35+
36+
t.equal(res, path.join(__dirname, 'shadowed_core/node_modules/util/index.js'));
37+
});
38+

test/shadowed_core/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
!/node_modules

test/shadowed_core/node_modules/util/index.js

Whitespace-only changes.

0 commit comments

Comments
 (0)