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.js61
-rw-r--r--node_modules/resolve/test/filter.js23
-rw-r--r--node_modules/resolve/test/filter_sync.js14
-rw-r--r--node_modules/resolve/test/pathfilter.js87
-rw-r--r--node_modules/resolve/test/resolver.js65
-rw-r--r--node_modules/resolve/test/resolver/symlinked/.npmignore1
-rw-r--r--node_modules/resolve/test/resolver/symlinked/_/.npmignore1
-rw-r--r--node_modules/resolve/test/resolver_sync.js44
-rw-r--r--node_modules/resolve/test/symlinks.js4
9 files changed, 254 insertions, 46 deletions
diff --git a/node_modules/resolve/test/core.js b/node_modules/resolve/test/core.js
index 1182e0c0b..33d9f3294 100644
--- a/node_modules/resolve/test/core.js
+++ b/node_modules/resolve/test/core.js
@@ -1,4 +1,5 @@
var test = require('tape');
+var keys = require('object-keys');
var resolve = require('../');
test('core modules', function (t) {
@@ -13,15 +14,67 @@ test('core modules', function (t) {
});
t.test('core list', function (st) {
- st.plan(resolve.core.length);
+ var cores = keys(resolve.core);
+ st.plan(cores.length);
- for (var i = 0; i < resolve.core.length; ++i) {
+ for (var i = 0; i < cores.length; ++i) {
+ var mod = cores[i];
+ if (resolve.core[mod]) {
+ st.doesNotThrow(
+ function () { require(mod); }, // eslint-disable-line no-loop-func
+ mod + ' supported; requiring does not throw'
+ );
+ } else {
+ st.throws(
+ function () { require(mod); }, // eslint-disable-line no-loop-func
+ mod + ' not supported; requiring throws'
+ );
+ }
+ }
+
+ st.end();
+ });
+
+ t.test('core via repl module', { skip: !resolve.core.repl }, function (st) {
+ var libs = require('repl')._builtinLibs; // eslint-disable-line no-underscore-dangle
+ if (!libs) {
+ st.skip('module.builtinModules does not exist');
+ return st.end();
+ }
+ for (var i = 0; i < libs.length; ++i) {
+ var mod = libs[i];
+ st.ok(resolve.core[mod], mod + ' is a core module');
st.doesNotThrow(
- function () { require(resolve.core[i]); }, // eslint-disable-line no-loop-func
- 'requiring ' + resolve.core[i] + ' does not throw'
+ function () { require(mod); }, // eslint-disable-line no-loop-func
+ 'requiring ' + mod + ' does not throw'
);
}
+ st.end();
+ });
+ t.test('core via builtinModules list', { skip: !resolve.core.module }, function (st) {
+ var libs = require('module').builtinModules;
+ if (!libs) {
+ st.skip('module.builtinModules does not exist');
+ return st.end();
+ }
+ var blacklist = [
+ '_debug_agent',
+ 'v8/tools/tickprocessor-driver',
+ 'v8/tools/SourceMap',
+ 'v8/tools/tickprocessor',
+ 'v8/tools/profile'
+ ];
+ for (var i = 0; i < libs.length; ++i) {
+ var mod = libs[i];
+ if (blacklist.indexOf(mod) === -1) {
+ st.ok(resolve.core[mod], mod + ' is a core module');
+ st.doesNotThrow(
+ function () { require(mod); }, // eslint-disable-line no-loop-func
+ 'requiring ' + mod + ' does not throw'
+ );
+ }
+ }
st.end();
});
diff --git a/node_modules/resolve/test/filter.js b/node_modules/resolve/test/filter.js
index 51a753f16..dfc622a87 100644
--- a/node_modules/resolve/test/filter.js
+++ b/node_modules/resolve/test/filter.js
@@ -3,17 +3,32 @@ var test = require('tape');
var resolve = require('../');
test('filter', function (t) {
- t.plan(2);
+ t.plan(4);
var dir = path.join(__dirname, 'resolver');
+ var packageFilterArgs;
resolve('./baz', {
basedir: dir,
- packageFilter: function (pkg) {
+ packageFilter: function (pkg, pkgfile) {
pkg.main = 'doom';
+ packageFilterArgs = [pkg, pkgfile];
return pkg;
}
}, function (err, res, pkg) {
if (err) t.fail(err);
- t.equal(res, path.join(dir, 'baz/doom.js'));
- t.equal(pkg.main, 'doom');
+
+ t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
+
+ var packageData = packageFilterArgs[0];
+ t.equal(pkg, packageData, 'first packageFilter argument is "pkg"');
+ t.equal(packageData.main, 'doom', 'package "main" was altered');
+
+ var packageFile = packageFilterArgs[1];
+ t.equal(
+ packageFile,
+ path.join(dir, 'baz/package.json'),
+ 'second packageFilter argument is "pkgfile"'
+ );
+
+ t.end();
});
});
diff --git a/node_modules/resolve/test/filter_sync.js b/node_modules/resolve/test/filter_sync.js
index fd4e97c28..064052e16 100644
--- a/node_modules/resolve/test/filter_sync.js
+++ b/node_modules/resolve/test/filter_sync.js
@@ -4,13 +4,23 @@ var resolve = require('../');
test('filter', function (t) {
var dir = path.join(__dirname, 'resolver');
+ var packageFilterArgs;
var res = resolve.sync('./baz', {
basedir: dir,
- packageFilter: function (pkg) {
+ packageFilter: function (pkg, dir) {
pkg.main = 'doom';
+ packageFilterArgs = [pkg, dir];
return pkg;
}
});
- t.equal(res, path.join(dir, 'baz/doom.js'));
+
+ t.equal(res, path.join(dir, 'baz/doom.js'), 'changing the package "main" works');
+
+ var packageData = packageFilterArgs[0];
+ t.equal(packageData.main, 'doom', 'package "main" was altered');
+
+ var packageFile = packageFilterArgs[1];
+ t.equal(packageFile, path.join(dir, 'baz'), 'second packageFilter argument is "dir"');
+
t.end();
});
diff --git a/node_modules/resolve/test/pathfilter.js b/node_modules/resolve/test/pathfilter.js
index 733045a06..16519aeae 100644
--- a/node_modules/resolve/test/pathfilter.js
+++ b/node_modules/resolve/test/pathfilter.js
@@ -2,41 +2,74 @@ var path = require('path');
var test = require('tape');
var resolve = require('../');
-test('#62: deep module references and the pathFilter', function (t) {
- t.plan(9);
+var resolverDir = path.join(__dirname, '/pathfilter/deep_ref');
- var resolverDir = path.join(__dirname, '/pathfilter/deep_ref');
- var pathFilter = function (pkg, x, remainder) {
+var pathFilterFactory = function (t) {
+ return function (pkg, x, remainder) {
t.equal(pkg.version, '1.2.3');
t.equal(x, path.join(resolverDir, 'node_modules/deep/ref'));
t.equal(remainder, 'ref');
return 'alt';
};
+};
+
+test('#62: deep module references and the pathFilter', function (t) {
+ t.test('deep/ref.js', function (st) {
+ st.plan(3);
- resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) {
- if (err) t.fail(err);
+ resolve('deep/ref', { basedir: resolverDir }, function (err, res, pkg) {
+ if (err) st.fail(err);
- t.equal(pkg.version, '1.2.3');
- t.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+ st.equal(pkg.version, '1.2.3');
+ st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+ });
+
+ var res = resolve.sync('deep/ref', { basedir: resolverDir });
+ st.equal(res, path.join(resolverDir, 'node_modules/deep/ref.js'));
+ });
+
+ t.test('deep/deeper/ref', function (st) {
+ st.plan(4);
+
+ resolve(
+ 'deep/deeper/ref',
+ { basedir: resolverDir },
+ function (err, res, pkg) {
+ if (err) t.fail(err);
+ st.notEqual(pkg, undefined);
+ st.equal(pkg.version, '1.2.3');
+ st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
+ }
+ );
+
+ var res = resolve.sync(
+ 'deep/deeper/ref',
+ { basedir: resolverDir }
+ );
+ st.equal(res, path.join(resolverDir, 'node_modules/deep/deeper/ref.js'));
+ });
+
+ t.test('deep/ref alt', function (st) {
+ st.plan(8);
+
+ var pathFilter = pathFilterFactory(st);
+
+ var res = resolve.sync(
+ 'deep/ref',
+ { basedir: resolverDir, pathFilter: pathFilter }
+ );
+ st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
+
+ resolve(
+ 'deep/ref',
+ { basedir: resolverDir, pathFilter: pathFilter },
+ function (err, res, pkg) {
+ if (err) st.fail(err);
+ st.equal(res, path.join(resolverDir, 'node_modules/deep/alt.js'));
+ st.end();
+ }
+ );
});
- 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, path.join(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, path.join(resolverDir, 'node_modules/deep/alt.js'));
- }
- );
+ t.end();
});
diff --git a/node_modules/resolve/test/resolver.js b/node_modules/resolve/test/resolver.js
index 56641dfde..31f810675 100644
--- a/node_modules/resolve/test/resolver.js
+++ b/node_modules/resolve/test/resolver.js
@@ -3,7 +3,7 @@ var test = require('tape');
var resolve = require('../');
test('async foo', function (t) {
- t.plan(10);
+ t.plan(12);
var dir = path.join(__dirname, 'resolver');
resolve('./foo', { basedir: dir }, function (err, res, pkg) {
@@ -30,10 +30,20 @@ test('async foo', function (t) {
t.equal(pkg.main, 'resolver');
});
+ resolve('./foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err, res) {
+ if (err) t.fail(err);
+ t.equal(res, path.join(dir, 'foo.js'));
+ });
+
resolve('foo', { basedir: dir }, function (err) {
t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");
t.equal(err.code, 'MODULE_NOT_FOUND');
});
+
+ // Test that filename is reported as the "from" value when passed.
+ resolve('foo', { basedir: dir, filename: path.join(dir, 'baz.js') }, function (err) {
+ t.equal(err.message, "Cannot find module 'foo' from '" + path.join(dir, 'baz.js') + "'");
+ });
});
test('bar', function (t) {
@@ -55,7 +65,7 @@ test('bar', function (t) {
resolve('foo', { basedir: dir + '/bar', 'package': { main: 'bar' } }, function (err, res, pkg) {
if (err) t.fail(err);
t.equal(res, path.join(dir, 'bar/node_modules/foo/index.js'));
- t.equal(pkg, undefined);
+ t.equal(pkg.main, 'bar');
});
});
@@ -113,7 +123,7 @@ test('biz', function (t) {
resolve('tiv', { basedir: dir + '/grux', 'package': { main: 'grux' } }, function (err, res, pkg) {
if (err) t.fail(err);
t.equal(res, path.join(dir, 'tiv/index.js'));
- t.equal(pkg, undefined);
+ t.equal(pkg.main, 'grux');
});
resolve('tiv', { basedir: dir + '/garply' }, function (err, res, pkg) {
@@ -125,7 +135,7 @@ test('biz', function (t) {
resolve('tiv', { basedir: dir + '/garply', 'package': { main: './lib' } }, function (err, res, pkg) {
if (err) t.fail(err);
t.equal(res, path.join(dir, 'tiv/index.js'));
- t.equal(pkg, undefined);
+ t.equal(pkg.main, './lib');
});
resolve('grux', { basedir: dir + '/tiv' }, function (err, res, pkg) {
@@ -137,7 +147,7 @@ test('biz', function (t) {
resolve('grux', { basedir: dir + '/tiv', 'package': { main: 'tiv' } }, function (err, res, pkg) {
if (err) t.fail(err);
t.equal(res, path.join(dir, 'grux/index.js'));
- t.equal(pkg, undefined);
+ t.equal(pkg.main, 'tiv');
});
resolve('garply', { basedir: dir + '/tiv' }, function (err, res, pkg) {
@@ -176,7 +186,7 @@ test('normalize', function (t) {
});
test('cup', function (t) {
- t.plan(4);
+ t.plan(5);
var dir = path.join(__dirname, 'resolver');
resolve('./cup', { basedir: dir, extensions: ['.js', '.coffee'] }, function (err, res) {
@@ -193,6 +203,11 @@ test('cup', function (t) {
t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");
t.equal(err.code, 'MODULE_NOT_FOUND');
});
+
+ // Test that filename is reported as the "from" value when passed.
+ resolve('./cup', { basedir: dir, extensions: ['.js'], filename: path.join(dir, 'cupboard.js') }, function (err, res) {
+ t.equal(err.message, "Cannot find module './cup' from '" + path.join(dir, 'cupboard.js') + "'");
+ });
});
test('mug', function (t) {
@@ -347,3 +362,41 @@ test('async dot slash main', function (t) {
t.end();
});
});
+
+test('not a directory', function (t) {
+ t.plan(5);
+ var path = './foo';
+ resolve(path, { basedir: __filename }, function (err, res, pkg) {
+ t.ok(err, 'a non-directory errors');
+ t.equal(arguments.length, 1);
+ t.equal(res, undefined);
+ t.equal(pkg, undefined);
+
+ t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'");
+ });
+});
+
+test('browser field in package.json', function (t) {
+ t.plan(3);
+
+ var dir = path.join(__dirname, 'resolver');
+ resolve(
+ './browser_field',
+ {
+ basedir: dir,
+ packageFilter: function packageFilter(pkg) {
+ if (pkg.browser) {
+ pkg.main = pkg.browser;
+ delete pkg.browser;
+ }
+ return pkg;
+ }
+ },
+ function (err, res, pkg) {
+ if (err) t.fail(err);
+ t.equal(res, path.join(dir, 'browser_field', 'b.js'));
+ t.equal(pkg && pkg.main, 'b');
+ t.equal(pkg && pkg.browser, undefined);
+ }
+ );
+});
diff --git a/node_modules/resolve/test/resolver/symlinked/.npmignore b/node_modules/resolve/test/resolver/symlinked/.npmignore
deleted file mode 100644
index f23f89258..000000000
--- a/node_modules/resolve/test/resolver/symlinked/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-symlink
diff --git a/node_modules/resolve/test/resolver/symlinked/_/.npmignore b/node_modules/resolve/test/resolver/symlinked/_/.npmignore
deleted file mode 100644
index cf4bab9dd..000000000
--- a/node_modules/resolve/test/resolver/symlinked/_/.npmignore
+++ /dev/null
@@ -1 +0,0 @@
-!node_modules
diff --git a/node_modules/resolve/test/resolver_sync.js b/node_modules/resolve/test/resolver_sync.js
index 8e33dca69..ce7357430 100644
--- a/node_modules/resolve/test/resolver_sync.js
+++ b/node_modules/resolve/test/resolver_sync.js
@@ -15,10 +15,26 @@ test('foo', function (t) {
path.join(dir, 'foo.js')
);
+ t.equal(
+ resolve.sync('./foo.js', { basedir: dir, filename: path.join(dir, 'bar.js') }),
+ path.join(dir, 'foo.js')
+ );
+
t.throws(function () {
resolve.sync('foo', { basedir: dir });
});
+ // Test that filename is reported as the "from" value when passed.
+ t.throws(
+ function () {
+ resolve.sync('foo', { basedir: dir, filename: path.join(dir, 'bar.js') });
+ },
+ {
+ name: 'Error',
+ message: "Cannot find module 'foo' from '" + path.join(dir, 'bar.js') + "'"
+ }
+ );
+
t.end();
});
@@ -265,3 +281,31 @@ test('sync dot slash main', function (t) {
t.ok(new Date() - start < 50, 'resolve.sync timedout');
t.end();
});
+
+test('not a directory', function (t) {
+ var path = './foo';
+ try {
+ resolve.sync(path, { basedir: __filename });
+ t.fail();
+ } catch (err) {
+ t.ok(err, 'a non-directory errors');
+ t.equal(err && err.message, 'Cannot find module \'' + path + "' from '" + __filename + "'");
+ }
+ t.end();
+});
+
+test('browser field in package.json', function (t) {
+ var dir = path.join(__dirname, 'resolver');
+ var res = resolve.sync('./browser_field', {
+ basedir: dir,
+ packageFilter: function packageFilter(pkg) {
+ if (pkg.browser) {
+ pkg.main = pkg.browser;
+ delete pkg.browser;
+ }
+ return pkg;
+ }
+ });
+ t.equal(res, path.join(dir, 'browser_field', 'b.js'));
+ t.end();
+});
diff --git a/node_modules/resolve/test/symlinks.js b/node_modules/resolve/test/symlinks.js
index 544a02371..0b1e6f778 100644
--- a/node_modules/resolve/test/symlinks.js
+++ b/node_modules/resolve/test/symlinks.js
@@ -41,7 +41,9 @@ test('sync symlink when preserveSymlinks = true', function (t) {
test('sync symlink', function (t) {
var start = new Date();
- t.equal(resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }), path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
+ t.doesNotThrow(function () {
+ t.equal(resolve.sync('foo', { basedir: symlinkDir, preserveSymlinks: false }), path.join(__dirname, 'resolver', 'symlinked', '_', 'node_modules', 'foo.js'));
+ });
t.ok(new Date() - start < 50, 'resolve.sync timedout');
t.end();
});