Skip to content

Commit 197288e

Browse files
authored
Merge pull request #148 from searls/147-shadowed-core-dependencies
Make behavior consistent with require.resolve() for "shadowed" core modules
2 parents 75108bc + 9e3104b commit 197288e

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
@@ -44,8 +44,8 @@ module.exports = function resolve(x, options, callback) {
4444
} else loadAsFile(res, opts.package, onfile);
4545
} else loadNodeModules(x, basedir, function (err, n, pkg) {
4646
if (err) cb(err);
47-
else if (n) cb(null, n, pkg);
4847
else if (core[x]) return cb(null, x);
48+
else if (n) return cb(null, n, pkg);
4949
else {
5050
var moduleError = new Error("Cannot find module '" + x + "' from '" + basedir + "'");
5151
moduleError.code = 'MODULE_NOT_FOUND';

lib/sync.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ module.exports = function (x, options) {
3232
if (x === '..' || x.slice(-1) === '/') res += '/';
3333
var m = loadAsFileSync(res) || loadAsDirectorySync(res);
3434
if (m) return m;
35+
} else if (core[x]) {
36+
return x;
3537
} else {
3638
var n = loadNodeModulesSync(x, basedir);
3739
if (n) return n;

test/resolver.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -268,17 +268,6 @@ test('without basedir', function (t) {
268268
});
269269
});
270270

271-
test('#25: node modules with the same name as node stdlib modules', function (t) {
272-
t.plan(1);
273-
274-
var resolverDir = path.join(__dirname, 'resolver/punycode');
275-
276-
resolve('punycode', { basedir: resolverDir }, function (err, res, pkg) {
277-
if (err) t.fail(err);
278-
t.equal(res, path.join(resolverDir, 'node_modules/punycode/index.js'));
279-
});
280-
});
281-
282271
test('#52 - incorrectly resolves module-paths like "./someFolder/" when there is a file of the same name', function (t) {
283272
t.plan(2);
284273

test/resolver_sync.js

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

171-
test('#25: node modules with the same name as node stdlib modules', function (t) {
172-
var resolverDir = path.join(__dirname, 'resolver/punycode');
173-
174-
t.equal(
175-
resolve.sync('punycode', { basedir: resolverDir }),
176-
path.join(resolverDir, 'node_modules/punycode/index.js')
177-
);
178-
179-
t.end();
180-
});
181-
182171
var stubStatSync = function stubStatSync(fn) {
183172
var fs = require('fs');
184173
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)