aboutsummaryrefslogtreecommitdiff
path: root/node_modules/resolve/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/resolve/test')
-rw-r--r--node_modules/resolve/test/core.js12
-rw-r--r--node_modules/resolve/test/dotdot.js29
-rw-r--r--node_modules/resolve/test/dotdot/abc/index.js2
-rw-r--r--node_modules/resolve/test/dotdot/index.js1
-rw-r--r--node_modules/resolve/test/faulty_basedir.js17
-rw-r--r--node_modules/resolve/test/filter.js18
-rw-r--r--node_modules/resolve/test/filter_sync.js15
-rw-r--r--node_modules/resolve/test/mock.js142
-rw-r--r--node_modules/resolve/test/mock_sync.js68
-rw-r--r--node_modules/resolve/test/module_dir.js56
-rw-r--r--node_modules/resolve/test/module_dir/xmodules/aaa/index.js1
-rw-r--r--node_modules/resolve/test/module_dir/ymodules/aaa/index.js1
-rw-r--r--node_modules/resolve/test/module_dir/zmodules/bbb/main.js1
-rw-r--r--node_modules/resolve/test/module_dir/zmodules/bbb/package.json3
-rw-r--r--node_modules/resolve/test/node_path.js48
-rw-r--r--node_modules/resolve/test/node_path/x/aaa/index.js1
-rw-r--r--node_modules/resolve/test/node_path/x/ccc/index.js1
-rw-r--r--node_modules/resolve/test/node_path/y/bbb/index.js1
-rw-r--r--node_modules/resolve/test/node_path/y/ccc/index.js1
-rw-r--r--node_modules/resolve/test/nonstring.js9
-rw-r--r--node_modules/resolve/test/pathfilter.js35
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/main.js0
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js0
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js0
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json4
-rw-r--r--node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js0
-rw-r--r--node_modules/resolve/test/precedence.js23
-rw-r--r--node_modules/resolve/test/precedence/aaa.js1
-rw-r--r--node_modules/resolve/test/precedence/aaa/index.js1
-rw-r--r--node_modules/resolve/test/precedence/aaa/main.js1
-rw-r--r--node_modules/resolve/test/precedence/bbb.js1
-rw-r--r--node_modules/resolve/test/precedence/bbb/main.js1
-rw-r--r--node_modules/resolve/test/resolver.js281
-rw-r--r--node_modules/resolve/test/resolver/bar/node_modules/foo/index.js1
-rw-r--r--node_modules/resolve/test/resolver/baz/doom.js0
-rw-r--r--node_modules/resolve/test/resolver/baz/package.json3
-rw-r--r--node_modules/resolve/test/resolver/baz/quux.js1
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js1
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/garply/package.json3
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/grux/index.js1
-rw-r--r--node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js1
-rw-r--r--node_modules/resolve/test/resolver/cup.coffee1
-rw-r--r--node_modules/resolve/test/resolver/foo.js1
-rw-r--r--node_modules/resolve/test/resolver/incorrect_main/index.js2
-rw-r--r--node_modules/resolve/test/resolver/incorrect_main/package.json3
-rw-r--r--node_modules/resolve/test/resolver/mug.coffee0
-rw-r--r--node_modules/resolve/test/resolver/mug.js0
-rw-r--r--node_modules/resolve/test/resolver/other_path/lib/other-lib.js0
-rw-r--r--node_modules/resolve/test/resolver/other_path/root.js0
-rw-r--r--node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js0
-rw-r--r--node_modules/resolve/test/resolver/quux/foo/index.js1
-rw-r--r--node_modules/resolve/test/resolver/without_basedir/main.js6
-rw-r--r--node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js1
-rw-r--r--node_modules/resolve/test/resolver_sync.js180
-rw-r--r--node_modules/resolve/test/subdirs.js13
-rw-r--r--node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json1
-rw-r--r--node_modules/resolve/test/subdirs/node_modules/a/package.json1
57 files changed, 996 insertions, 0 deletions
diff --git a/node_modules/resolve/test/core.js b/node_modules/resolve/test/core.js
new file mode 100644
index 000000000..4a5668207
--- /dev/null
+++ b/node_modules/resolve/test/core.js
@@ -0,0 +1,12 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('core modules', function (t) {
+ t.ok(resolve.isCore('fs'));
+ t.ok(resolve.isCore('net'));
+ t.ok(resolve.isCore('http'));
+
+ t.ok(!resolve.isCore('seq'));
+ t.ok(!resolve.isCore('../'));
+ t.end();
+});
diff --git a/node_modules/resolve/test/dotdot.js b/node_modules/resolve/test/dotdot.js
new file mode 100644
index 000000000..b87677278
--- /dev/null
+++ b/node_modules/resolve/test/dotdot.js
@@ -0,0 +1,29 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('dotdot', function (t) {
+ t.plan(4);
+ var dir = __dirname + '/dotdot/abc';
+
+ resolve('..', { basedir : dir }, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, __dirname + '/dotdot/index.js');
+ });
+
+ resolve('.', { basedir : dir }, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/index.js');
+ });
+});
+
+test('dotdot sync', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/dotdot/abc';
+
+ var a = resolve.sync('..', { basedir : dir });
+ t.equal(a, __dirname + '/dotdot/index.js');
+
+ var b = resolve.sync('.', { basedir : dir });
+ t.equal(b, dir + '/index.js');
+});
diff --git a/node_modules/resolve/test/dotdot/abc/index.js b/node_modules/resolve/test/dotdot/abc/index.js
new file mode 100644
index 000000000..67f2534eb
--- /dev/null
+++ b/node_modules/resolve/test/dotdot/abc/index.js
@@ -0,0 +1,2 @@
+var x = require('..');
+console.log(x);
diff --git a/node_modules/resolve/test/dotdot/index.js b/node_modules/resolve/test/dotdot/index.js
new file mode 100644
index 000000000..afec73603
--- /dev/null
+++ b/node_modules/resolve/test/dotdot/index.js
@@ -0,0 +1 @@
+module.exports = 'whatever'
diff --git a/node_modules/resolve/test/faulty_basedir.js b/node_modules/resolve/test/faulty_basedir.js
new file mode 100644
index 000000000..244081882
--- /dev/null
+++ b/node_modules/resolve/test/faulty_basedir.js
@@ -0,0 +1,17 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+// not sure what's up with this test anymore
+if (process.platform !== 'win32') return;
+
+test('faulty basedir must produce error in windows', function (t) {
+ t.plan(1);
+
+ var resolverDir = 'C:\\a\\b\\c\\d';
+
+ resolve('tape/lib/test.js', { basedir : resolverDir }, function (err, res, pkg) {
+ t.equal(true, !!err);
+ });
+
+});
diff --git a/node_modules/resolve/test/filter.js b/node_modules/resolve/test/filter.js
new file mode 100644
index 000000000..07c38f349
--- /dev/null
+++ b/node_modules/resolve/test/filter.js
@@ -0,0 +1,18 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/resolver';
+ resolve('./baz', {
+ basedir : dir,
+ packageFilter : function (pkg) {
+ pkg.main = 'doom';
+ return pkg;
+ }
+ }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/baz/doom.js');
+ t.equal(pkg.main, 'doom');
+ });
+});
diff --git a/node_modules/resolve/test/filter_sync.js b/node_modules/resolve/test/filter_sync.js
new file mode 100644
index 000000000..3f89b7942
--- /dev/null
+++ b/node_modules/resolve/test/filter_sync.js
@@ -0,0 +1,15 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('filter', function (t) {
+ var dir = __dirname + '/resolver';
+ var res = resolve.sync('./baz', {
+ basedir : dir,
+ packageFilter : function (pkg) {
+ pkg.main = 'doom'
+ return pkg;
+ }
+ });
+ t.equal(res, dir + '/baz/doom.js');
+ t.end();
+});
diff --git a/node_modules/resolve/test/mock.js b/node_modules/resolve/test/mock.js
new file mode 100644
index 000000000..1cf3b1247
--- /dev/null
+++ b/node_modules/resolve/test/mock.js
@@ -0,0 +1,142 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+ t.plan(6);
+
+ var files = {
+ '/foo/bar/baz.js' : 'beep'
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module 'baz' from '/foo/bar'");
+ });
+
+ resolve('../baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module '../baz' from '/foo/bar'");
+ });
+});
+
+test('mock from package', function (t) {
+ t.plan(6);
+
+ var files = {
+ '/foo/bar/baz.js' : 'beep'
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ package : { main: 'bar' },
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('./baz', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg.main, 'bar');
+ });
+
+ resolve('./baz.js', opts('/foo/bar'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/bar/baz.js');
+ t.equal(pkg.main, 'bar');
+ });
+
+ resolve('baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module 'baz' from '/foo/bar'");
+ });
+
+ resolve('../baz', opts('/foo/bar'), function (err, res) {
+ t.equal(err.message, "Cannot find module '../baz' from '/foo/bar'");
+ });
+});
+
+test('mock package', function (t) {
+ t.plan(2);
+
+ var files = {
+ '/foo/node_modules/bar/baz.js' : 'beep',
+ '/foo/node_modules/bar/package.json' : JSON.stringify({
+ main : './baz.js'
+ })
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('bar', opts('/foo'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/node_modules/bar/baz.js');
+ t.equal(pkg.main, './baz.js');
+ });
+});
+
+test('mock package from package', function (t) {
+ t.plan(2);
+
+ var files = {
+ '/foo/node_modules/bar/baz.js' : 'beep',
+ '/foo/node_modules/bar/package.json' : JSON.stringify({
+ main : './baz.js'
+ })
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ package : { main: 'bar' },
+ isFile : function (file, cb) {
+ cb(null, files.hasOwnProperty(file));
+ },
+ readFile : function (file, cb) {
+ cb(null, files[file]);
+ }
+ }
+ }
+
+ resolve('bar', opts('/foo'), function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, '/foo/node_modules/bar/baz.js');
+ t.equal(pkg.main, './baz.js');
+ });
+});
diff --git a/node_modules/resolve/test/mock_sync.js b/node_modules/resolve/test/mock_sync.js
new file mode 100644
index 000000000..abfd28935
--- /dev/null
+++ b/node_modules/resolve/test/mock_sync.js
@@ -0,0 +1,68 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('mock', function (t) {
+ t.plan(4);
+
+ var files = {
+ '/foo/bar/baz.js' : 'beep'
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file) {
+ return files.hasOwnProperty(file)
+ },
+ readFileSync : function (file) {
+ return files[file]
+ }
+ }
+ }
+
+ t.equal(
+ resolve.sync('./baz', opts('/foo/bar')),
+ '/foo/bar/baz.js'
+ );
+
+ t.equal(
+ resolve.sync('./baz.js', opts('/foo/bar')),
+ '/foo/bar/baz.js'
+ );
+
+ t.throws(function () {
+ resolve.sync('baz', opts('/foo/bar'));
+ });
+
+ t.throws(function () {
+ resolve.sync('../baz', opts('/foo/bar'));
+ });
+});
+
+test('mock package', function (t) {
+ t.plan(1);
+
+ var files = {
+ '/foo/node_modules/bar/baz.js' : 'beep',
+ '/foo/node_modules/bar/package.json' : JSON.stringify({
+ main : './baz.js'
+ })
+ };
+
+ function opts (basedir) {
+ return {
+ basedir : basedir,
+ isFile : function (file) {
+ return files.hasOwnProperty(file)
+ },
+ readFileSync : function (file) {
+ return files[file]
+ }
+ }
+ }
+
+ t.equal(
+ resolve.sync('bar', opts('/foo')),
+ '/foo/node_modules/bar/baz.js'
+ );
+});
diff --git a/node_modules/resolve/test/module_dir.js b/node_modules/resolve/test/module_dir.js
new file mode 100644
index 000000000..06395d8cb
--- /dev/null
+++ b/node_modules/resolve/test/module_dir.js
@@ -0,0 +1,56 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('moduleDirectory strings', function (t) {
+ t.plan(4);
+ var dir = __dirname + '/module_dir';
+ var xopts = {
+ basedir : dir,
+ moduleDirectory: 'xmodules'
+ };
+ resolve('aaa', xopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/xmodules/aaa/index.js');
+ });
+
+ var yopts = {
+ basedir : dir,
+ moduleDirectory: 'ymodules'
+ };
+ resolve('aaa', yopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/ymodules/aaa/index.js');
+ });
+});
+
+test('moduleDirectory array', function (t) {
+ t.plan(6);
+ var dir = __dirname + '/module_dir';
+ var aopts = {
+ basedir : dir,
+ moduleDirectory: [ 'xmodules', 'ymodules', 'zmodules' ]
+ };
+ resolve('aaa', aopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/xmodules/aaa/index.js');
+ });
+
+ var bopts = {
+ basedir : dir,
+ moduleDirectory: [ 'zmodules', 'ymodules', 'xmodules' ]
+ };
+ resolve('aaa', bopts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/ymodules/aaa/index.js');
+ });
+
+ var copts = {
+ basedir : dir,
+ moduleDirectory: [ 'xmodules', 'ymodules', 'zmodules' ]
+ };
+ resolve('bbb', copts, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, dir + '/zmodules/bbb/main.js');
+ });
+});
diff --git a/node_modules/resolve/test/module_dir/xmodules/aaa/index.js b/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
new file mode 100644
index 000000000..55cd18ca7
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/xmodules/aaa/index.js
@@ -0,0 +1 @@
+module.exports = function (x) { return x * 100 }
diff --git a/node_modules/resolve/test/module_dir/ymodules/aaa/index.js b/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
new file mode 100644
index 000000000..651aca860
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/ymodules/aaa/index.js
@@ -0,0 +1 @@
+module.exports = function (x) { return x + 100 }
diff --git a/node_modules/resolve/test/module_dir/zmodules/bbb/main.js b/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
new file mode 100644
index 000000000..4325a0bd5
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/zmodules/bbb/main.js
@@ -0,0 +1 @@
+module.exports = function (n) { return n * 111 }
diff --git a/node_modules/resolve/test/module_dir/zmodules/bbb/package.json b/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
new file mode 100644
index 000000000..c13b8cf6a
--- /dev/null
+++ b/node_modules/resolve/test/module_dir/zmodules/bbb/package.json
@@ -0,0 +1,3 @@
+{
+ "main": "main.js"
+}
diff --git a/node_modules/resolve/test/node_path.js b/node_modules/resolve/test/node_path.js
new file mode 100644
index 000000000..2407189b8
--- /dev/null
+++ b/node_modules/resolve/test/node_path.js
@@ -0,0 +1,48 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('$NODE_PATH', function (t) {
+ t.plan(4);
+
+ resolve('aaa', {
+ paths: [
+ __dirname + '/node_path/x',
+ __dirname + '/node_path/y'
+ ],
+ basedir: __dirname,
+ }, function (err, res) {
+ t.equal(res, __dirname + '/node_path/x/aaa/index.js');
+ });
+
+ resolve('bbb', {
+ paths: [
+ __dirname + '/node_path/x',
+ __dirname + '/node_path/y'
+ ],
+ basedir: __dirname,
+ }, function (err, res) {
+ t.equal(res, __dirname + '/node_path/y/bbb/index.js');
+ });
+
+ resolve('ccc', {
+ paths: [
+ __dirname + '/node_path/x',
+ __dirname + '/node_path/y'
+ ],
+ basedir: __dirname,
+ }, function (err, res) {
+ t.equal(res, __dirname + '/node_path/x/ccc/index.js');
+ });
+
+ // ensure that relative paths still resolve against the
+ // regular `node_modules` correctly
+ resolve('tap', {
+ paths: [
+ 'node_path',
+ ],
+ basedir: 'node_path/x',
+ }, function (err, res) {
+ t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap/lib/main.js'));
+ });
+});
diff --git a/node_modules/resolve/test/node_path/x/aaa/index.js b/node_modules/resolve/test/node_path/x/aaa/index.js
new file mode 100644
index 000000000..1ea591380
--- /dev/null
+++ b/node_modules/resolve/test/node_path/x/aaa/index.js
@@ -0,0 +1 @@
+module.exports = 'A'
diff --git a/node_modules/resolve/test/node_path/x/ccc/index.js b/node_modules/resolve/test/node_path/x/ccc/index.js
new file mode 100644
index 000000000..f186fa757
--- /dev/null
+++ b/node_modules/resolve/test/node_path/x/ccc/index.js
@@ -0,0 +1 @@
+module.exports = 'C'
diff --git a/node_modules/resolve/test/node_path/y/bbb/index.js b/node_modules/resolve/test/node_path/y/bbb/index.js
new file mode 100644
index 000000000..e22dd83c0
--- /dev/null
+++ b/node_modules/resolve/test/node_path/y/bbb/index.js
@@ -0,0 +1 @@
+module.exports = 'B'
diff --git a/node_modules/resolve/test/node_path/y/ccc/index.js b/node_modules/resolve/test/node_path/y/ccc/index.js
new file mode 100644
index 000000000..d0043d1ec
--- /dev/null
+++ b/node_modules/resolve/test/node_path/y/ccc/index.js
@@ -0,0 +1 @@
+module.exports = 'CY'
diff --git a/node_modules/resolve/test/nonstring.js b/node_modules/resolve/test/nonstring.js
new file mode 100644
index 000000000..ef63c40f9
--- /dev/null
+++ b/node_modules/resolve/test/nonstring.js
@@ -0,0 +1,9 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('nonstring', function (t) {
+ t.plan(1);
+ resolve(555, function (err, res, pkg) {
+ t.ok(err);
+ });
+});
diff --git a/node_modules/resolve/test/pathfilter.js b/node_modules/resolve/test/pathfilter.js
new file mode 100644
index 000000000..142f94d65
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter.js
@@ -0,0 +1,35 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('#62: deep module references and the pathFilter', function(t){
+ t.plan(9);
+
+ var resolverDir = __dirname + '/pathfilter/deep_ref';
+ var pathFilter = function(pkg, x, remainder){
+ t.equal(pkg.version, "1.2.3");
+ t.equal(x, resolverDir + '/node_modules/deep/ref');
+ t.equal(remainder, "ref");
+ return "alt";
+ };
+
+ resolve('deep/ref', { basedir : resolverDir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+
+ t.equal(pkg.version, "1.2.3");
+ t.equal(res, resolverDir + '/node_modules/deep/ref.js');
+ });
+
+ resolve('deep/deeper/ref', { basedir: resolverDir },
+ function(err, res, pkg) {
+ if(err) t.fail(err);
+ t.notEqual(pkg, undefined);
+ t.equal(pkg.version, "1.2.3");
+ t.equal(res, resolverDir + '/node_modules/deep/deeper/ref.js');
+ });
+
+ resolve('deep/ref', { basedir : resolverDir, pathFilter : pathFilter },
+ function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/node_modules/deep/alt.js');
+ });
+});
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/main.js b/node_modules/resolve/test/pathfilter/deep_ref/main.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/main.js
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/alt.js
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/deeper/ref.js
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json
new file mode 100644
index 000000000..fe4b408a0
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/package.json
@@ -0,0 +1,4 @@
+{
+ "name": "deep",
+ "version": "1.2.3"
+}
diff --git a/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/pathfilter/deep_ref/node_modules/deep/ref.js
diff --git a/node_modules/resolve/test/precedence.js b/node_modules/resolve/test/precedence.js
new file mode 100644
index 000000000..c716f0e9f
--- /dev/null
+++ b/node_modules/resolve/test/precedence.js
@@ -0,0 +1,23 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('precedence', function (t) {
+ t.plan(3);
+ var dir = path.join(__dirname, 'precedence/aaa');
+
+ resolve('./', { basedir : dir }, function (err, res, pkg) {
+ t.ifError(err);
+ t.equal(res, path.join(dir, 'index.js'));
+ t.equal(pkg.name, 'resolve');
+ });
+});
+
+test('./ should not load ${dir}.js', function (t) {
+ t.plan(1);
+ var dir = path.join(__dirname, 'precedence/bbb');
+
+ resolve('./', { basedir : dir }, function (err, res, pkg) {
+ t.ok(err);
+ });
+});
diff --git a/node_modules/resolve/test/precedence/aaa.js b/node_modules/resolve/test/precedence/aaa.js
new file mode 100644
index 000000000..a182397c5
--- /dev/null
+++ b/node_modules/resolve/test/precedence/aaa.js
@@ -0,0 +1 @@
+module.exports = 'wtf'
diff --git a/node_modules/resolve/test/precedence/aaa/index.js b/node_modules/resolve/test/precedence/aaa/index.js
new file mode 100644
index 000000000..993b03c2c
--- /dev/null
+++ b/node_modules/resolve/test/precedence/aaa/index.js
@@ -0,0 +1 @@
+module.exports = 'okok'
diff --git a/node_modules/resolve/test/precedence/aaa/main.js b/node_modules/resolve/test/precedence/aaa/main.js
new file mode 100644
index 000000000..db38959d7
--- /dev/null
+++ b/node_modules/resolve/test/precedence/aaa/main.js
@@ -0,0 +1 @@
+console.log(require('./'))
diff --git a/node_modules/resolve/test/precedence/bbb.js b/node_modules/resolve/test/precedence/bbb.js
new file mode 100644
index 000000000..c8a9996b3
--- /dev/null
+++ b/node_modules/resolve/test/precedence/bbb.js
@@ -0,0 +1 @@
+module.exports '>_<'
diff --git a/node_modules/resolve/test/precedence/bbb/main.js b/node_modules/resolve/test/precedence/bbb/main.js
new file mode 100644
index 000000000..716b81d4b
--- /dev/null
+++ b/node_modules/resolve/test/precedence/bbb/main.js
@@ -0,0 +1 @@
+console.log(require('./')); // should throw
diff --git a/node_modules/resolve/test/resolver.js b/node_modules/resolve/test/resolver.js
new file mode 100644
index 000000000..5bbb05f90
--- /dev/null
+++ b/node_modules/resolve/test/resolver.js
@@ -0,0 +1,281 @@
+var path = require('path');
+var test = require('tape');
+var resolve = require('../');
+
+test('async foo', function (t) {
+ t.plan(9);
+ var dir = __dirname + '/resolver';
+
+ resolve('./foo', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.name, 'resolve');
+ });
+
+ resolve('./foo.js', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.name, 'resolve');
+ });
+
+ resolve('./foo', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.main, 'resolver');
+ });
+
+ resolve('./foo.js', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo.js');
+ t.equal(pkg.main, 'resolver');
+ });
+
+ resolve('foo', { basedir : dir }, function (err) {
+ t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
+ });
+});
+
+test('bar', function (t) {
+ t.plan(6);
+ var dir = __dirname + '/resolver';
+
+ resolve('foo', { basedir : dir + '/bar' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/bar/node_modules/foo/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('foo', { basedir : dir + '/bar' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/bar/node_modules/foo/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('foo', { basedir : dir + '/bar', package: { main: 'bar' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/bar/node_modules/foo/index.js');
+ t.equal(pkg, undefined);
+ });
+});
+
+test('baz', function (t) {
+ t.plan(4);
+ var dir = __dirname + '/resolver';
+
+ resolve('./baz', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/baz/quux.js');
+ t.equal(pkg.main, 'quux.js');
+ });
+
+ resolve('./baz', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/baz/quux.js');
+ t.equal(pkg.main, 'quux.js');
+ });
+});
+
+test('biz', function (t) {
+ t.plan(24);
+ var dir = __dirname + '/resolver/biz/node_modules';
+
+ resolve('./grux', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('./grux', { basedir : dir, package: { main: 'biz' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg.main, 'biz');
+ });
+
+ resolve('./garply', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+
+ resolve('./garply', { basedir : dir, package: { main: 'biz' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+
+ resolve('tiv', { basedir : dir + '/grux' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('tiv', { basedir : dir + '/grux', package: { main: 'grux' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('tiv', { basedir : dir + '/garply' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('tiv', { basedir : dir + '/garply', package: { main: './lib' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/tiv/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('grux', { basedir : dir + '/tiv' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('grux', { basedir : dir + '/tiv', package: { main: 'tiv' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/grux/index.js');
+ t.equal(pkg, undefined);
+ });
+
+ resolve('garply', { basedir : dir + '/tiv' }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+
+ resolve('garply', { basedir : dir + '/tiv', package: { main: 'tiv' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/garply/lib/index.js');
+ t.equal(pkg.main, './lib');
+ });
+});
+
+test('quux', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/resolver/quux';
+
+ resolve('./foo', { basedir : dir, package: { main: 'quux' } }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/foo/index.js');
+ t.equal(pkg.main, 'quux');
+ });
+});
+
+test('normalize', function (t) {
+ t.plan(2);
+ var dir = __dirname + '/resolver/biz/node_modules/grux';
+
+ resolve('../grux', { basedir : dir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/index.js');
+ t.equal(pkg, undefined);
+ });
+});
+
+test('cup', function (t) {
+ t.plan(3);
+ var dir = __dirname + '/resolver';
+
+ resolve('./cup', { basedir : dir, extensions : [ '.js', '.coffee' ] },
+ function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/cup.coffee');
+ });
+
+ resolve('./cup.coffee', { basedir : dir }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/cup.coffee');
+ });
+
+ resolve('./cup', { basedir : dir, extensions : [ '.js' ] },
+ function (err, res) {
+ t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
+ });
+});
+
+test('mug', function (t) {
+ t.plan(3);
+ var dir = __dirname + '/resolver';
+
+ resolve('./mug', { basedir : dir }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/mug.js');
+ });
+
+ resolve('./mug', { basedir : dir, extensions : [ '.coffee', '.js' ] },
+ function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/mug.coffee');
+ });
+
+ resolve('./mug', { basedir : dir, extensions : [ '.js', '.coffee' ] },
+ function (err, res) {
+ t.equal(res, dir + '/mug.js');
+ });
+});
+
+test('other path', function (t) {
+ t.plan(4);
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/bar';
+ var otherDir = resolverDir + '/other_path';
+
+ resolve('root', { basedir : dir, paths: [otherDir] }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/other_path/root.js');
+ });
+
+ resolve('lib/other-lib', { basedir : dir, paths: [otherDir] },
+ function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/other_path/lib/other-lib.js');
+ });
+
+ resolve('root', { basedir : dir, }, function (err, res) {
+ t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'");
+ });
+
+ resolve('zzz', { basedir : dir, paths: [otherDir] }, function (err, res) {
+ t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'");
+ });
+});
+
+test('incorrect main', function (t) {
+ t.plan(1)
+
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/incorrect_main';
+
+ resolve('./incorrect_main', { basedir : resolverDir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, dir + '/index.js');
+ });
+});
+
+test('without basedir', function (t) {
+ t.plan(1);
+
+ var dir = __dirname + '/resolver/without_basedir';
+ var tester = require(dir + '/main.js');
+
+ tester(t, function (err, res, pkg){
+ if (err) {
+ t.fail(err);
+ } else {
+ t.equal(res, dir + '/node_modules/mymodule.js');
+ }
+ });
+});
+
+test('#25: node modules with the same name as node stdlib modules', function (t) {
+ t.plan(1);
+
+ var resolverDir = __dirname + '/resolver/punycode';
+
+ resolve('punycode', { basedir : resolverDir }, function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, resolverDir + '/node_modules/punycode/index.js');
+ });
+});
diff --git a/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js b/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/bar/node_modules/foo/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/baz/doom.js b/node_modules/resolve/test/resolver/baz/doom.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/baz/doom.js
diff --git a/node_modules/resolve/test/resolver/baz/package.json b/node_modules/resolve/test/resolver/baz/package.json
new file mode 100644
index 000000000..6b81dcddf
--- /dev/null
+++ b/node_modules/resolve/test/resolver/baz/package.json
@@ -0,0 +1,3 @@
+{
+ "main" : "quux.js"
+}
diff --git a/node_modules/resolve/test/resolver/baz/quux.js b/node_modules/resolve/test/resolver/baz/quux.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/baz/quux.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js b/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js
new file mode 100644
index 000000000..0379e29f7
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/garply/lib/index.js
@@ -0,0 +1 @@
+module.exports = 'hello garply';
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json b/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json
new file mode 100644
index 000000000..babaac58f
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/garply/package.json
@@ -0,0 +1,3 @@
+{
+ "main" : "./lib"
+}
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js b/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js
new file mode 100644
index 000000000..49960555a
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/grux/index.js
@@ -0,0 +1 @@
+module.exports = require('tiv') * 100;
diff --git a/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js b/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js
new file mode 100644
index 000000000..690aad34a
--- /dev/null
+++ b/node_modules/resolve/test/resolver/biz/node_modules/tiv/index.js
@@ -0,0 +1 @@
+module.exports = 3;
diff --git a/node_modules/resolve/test/resolver/cup.coffee b/node_modules/resolve/test/resolver/cup.coffee
new file mode 100644
index 000000000..8b1378917
--- /dev/null
+++ b/node_modules/resolve/test/resolver/cup.coffee
@@ -0,0 +1 @@
+
diff --git a/node_modules/resolve/test/resolver/foo.js b/node_modules/resolve/test/resolver/foo.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/foo.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/incorrect_main/index.js b/node_modules/resolve/test/resolver/incorrect_main/index.js
new file mode 100644
index 000000000..bc1fb0a6f
--- /dev/null
+++ b/node_modules/resolve/test/resolver/incorrect_main/index.js
@@ -0,0 +1,2 @@
+// this is the actual main file 'index.js', not 'wrong.js' like the package.json would indicate
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/incorrect_main/package.json b/node_modules/resolve/test/resolver/incorrect_main/package.json
new file mode 100644
index 000000000..1592ed393
--- /dev/null
+++ b/node_modules/resolve/test/resolver/incorrect_main/package.json
@@ -0,0 +1,3 @@
+{
+ "main" : "wrong.js"
+}
diff --git a/node_modules/resolve/test/resolver/mug.coffee b/node_modules/resolve/test/resolver/mug.coffee
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/mug.coffee
diff --git a/node_modules/resolve/test/resolver/mug.js b/node_modules/resolve/test/resolver/mug.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/mug.js
diff --git a/node_modules/resolve/test/resolver/other_path/lib/other-lib.js b/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/other_path/lib/other-lib.js
diff --git a/node_modules/resolve/test/resolver/other_path/root.js b/node_modules/resolve/test/resolver/other_path/root.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/other_path/root.js
diff --git a/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js b/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/node_modules/resolve/test/resolver/punycode/node_modules/punycode/index.js
diff --git a/node_modules/resolve/test/resolver/quux/foo/index.js b/node_modules/resolve/test/resolver/quux/foo/index.js
new file mode 100644
index 000000000..bd816eaba
--- /dev/null
+++ b/node_modules/resolve/test/resolver/quux/foo/index.js
@@ -0,0 +1 @@
+module.exports = 1;
diff --git a/node_modules/resolve/test/resolver/without_basedir/main.js b/node_modules/resolve/test/resolver/without_basedir/main.js
new file mode 100644
index 000000000..5f211e9ca
--- /dev/null
+++ b/node_modules/resolve/test/resolver/without_basedir/main.js
@@ -0,0 +1,6 @@
+resolve = require('../../../');
+
+module.exports = function(t, cb) {
+ resolve('mymodule', null, cb);
+}
+
diff --git a/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js b/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js
new file mode 100644
index 000000000..2b58aa408
--- /dev/null
+++ b/node_modules/resolve/test/resolver/without_basedir/node_modules/mymodule.js
@@ -0,0 +1 @@
+module.exports = "The tools we use have a profound (and devious!) influence on our thinking habits, and, therefore, on our thinking abilities.- E. Dijkstra"
diff --git a/node_modules/resolve/test/resolver_sync.js b/node_modules/resolve/test/resolver_sync.js
new file mode 100644
index 000000000..598253171
--- /dev/null
+++ b/node_modules/resolve/test/resolver_sync.js
@@ -0,0 +1,180 @@
+var test = require('tape');
+var resolve = require('../');
+
+test('foo', function (t) {
+ var dir = __dirname + '/resolver';
+
+ t.equal(
+ resolve.sync('./foo', { basedir : dir }),
+ dir + '/foo.js'
+ );
+
+ t.equal(
+ resolve.sync('./foo.js', { basedir : dir }),
+ dir + '/foo.js'
+ );
+
+ t.throws(function () {
+ resolve.sync('foo', { basedir : dir });
+ });
+
+ t.end();
+});
+
+test('bar', function (t) {
+ var dir = __dirname + '/resolver';
+
+ t.equal(
+ resolve.sync('foo', { basedir : dir + '/bar' }),
+ dir + '/bar/node_modules/foo/index.js'
+ );
+ t.end();
+});
+
+test('baz', function (t) {
+ var dir = __dirname + '/resolver';
+
+ t.equal(
+ resolve.sync('./baz', { basedir : dir }),
+ dir + '/baz/quux.js'
+ );
+ t.end();
+});
+
+test('biz', function (t) {
+ var dir = __dirname + '/resolver/biz/node_modules';
+ t.equal(
+ resolve.sync('./grux', { basedir : dir }),
+ dir + '/grux/index.js'
+ );
+
+ t.equal(
+ resolve.sync('tiv', { basedir : dir + '/grux' }),
+ dir + '/tiv/index.js'
+ );
+
+ t.equal(
+ resolve.sync('grux', { basedir : dir + '/tiv' }),
+ dir + '/grux/index.js'
+ );
+ t.end();
+});
+
+test('normalize', function (t) {
+ var dir = __dirname + '/resolver/biz/node_modules/grux';
+ t.equal(
+ resolve.sync('../grux', { basedir : dir }),
+ dir + '/index.js'
+ );
+ t.end();
+});
+
+test('cup', function (t) {
+ var dir = __dirname + '/resolver';
+ t.equal(
+ resolve.sync('./cup', {
+ basedir : dir,
+ extensions : [ '.js', '.coffee' ]
+ }),
+ dir + '/cup.coffee'
+ );
+
+ t.equal(
+ resolve.sync('./cup.coffee', {
+ basedir : dir
+ }),
+ dir + '/cup.coffee'
+ );
+
+ t.throws(function () {
+ resolve.sync('./cup', {
+ basedir : dir,
+ extensions : [ '.js' ]
+ })
+ });
+
+ t.end();
+});
+
+test('mug', function (t) {
+ var dir = __dirname + '/resolver';
+ t.equal(
+ resolve.sync('./mug', { basedir : dir }),
+ dir + '/mug.js'
+ );
+
+ t.equal(
+ resolve.sync('./mug', {
+ basedir : dir,
+ extensions : [ '.coffee', '.js' ]
+ }),
+ dir + '/mug.coffee'
+ );
+
+ t.equal(
+ resolve.sync('./mug', {
+ basedir : dir,
+ extensions : [ '.js', '.coffee' ]
+ }),
+ dir + '/mug.js'
+ );
+
+ t.end();
+});
+
+test('other path', function (t) {
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/bar';
+ var otherDir = resolverDir + '/other_path';
+
+ var path = require('path');
+
+ t.equal(
+ resolve.sync('root', {
+ basedir : dir,
+ paths: [otherDir] }),
+ resolverDir + '/other_path/root.js'
+ );
+
+ t.equal(
+ resolve.sync('lib/other-lib', {
+ basedir : dir,
+ paths: [otherDir] }),
+ resolverDir + '/other_path/lib/other-lib.js'
+ );
+
+ t.throws(function () {
+ resolve.sync('root', { basedir : dir, });
+ });
+
+ t.throws(function () {
+ resolve.sync('zzz', {
+ basedir : dir,
+ paths: [otherDir] });
+ });
+
+ t.end();
+});
+
+test('incorrect main', function (t) {
+ var resolverDir = __dirname + '/resolver';
+ var dir = resolverDir + '/incorrect_main';
+
+ t.equal(
+ resolve.sync('./incorrect_main', { basedir : resolverDir }),
+ dir + '/index.js'
+ )
+
+ t.end()
+});
+
+test('#25: node modules with the same name as node stdlib modules', function (t) {
+ var resolverDir = __dirname + '/resolver/punycode';
+
+ t.equal(
+ resolve.sync('punycode', { basedir : resolverDir }),
+ resolverDir + '/node_modules/punycode/index.js'
+ )
+
+ t.end()
+});
diff --git a/node_modules/resolve/test/subdirs.js b/node_modules/resolve/test/subdirs.js
new file mode 100644
index 000000000..957abfe0c
--- /dev/null
+++ b/node_modules/resolve/test/subdirs.js
@@ -0,0 +1,13 @@
+var test = require('tape');
+var resolve = require('../');
+var path = require('path');
+
+test('subdirs', function (t) {
+ t.plan(2);
+
+ var dir = path.join(__dirname, '/subdirs');
+ resolve('a/b/c/x.json', { basedir: dir }, function (err, res) {
+ t.ifError(err);
+ t.equal(res, path.join(dir, 'node_modules/a/b/c/x.json'));
+ });
+});
diff --git a/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json b/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json
new file mode 100644
index 000000000..3cc0ecbed
--- /dev/null
+++ b/node_modules/resolve/test/subdirs/node_modules/a/b/c/x.json
@@ -0,0 +1 @@
+[1,2,3]
diff --git a/node_modules/resolve/test/subdirs/node_modules/a/package.json b/node_modules/resolve/test/subdirs/node_modules/a/package.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/node_modules/resolve/test/subdirs/node_modules/a/package.json
@@ -0,0 +1 @@
+{}