summaryrefslogtreecommitdiffstats
path: root/node_modules/require_optional/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/require_optional/test')
-rw-r--r--node_modules/require_optional/test/nestedTest/index.js8
-rw-r--r--node_modules/require_optional/test/nestedTest/package.json11
-rw-r--r--node_modules/require_optional/test/require_optional_tests.js59
3 files changed, 78 insertions, 0 deletions
diff --git a/node_modules/require_optional/test/nestedTest/index.js b/node_modules/require_optional/test/nestedTest/index.js
new file mode 100644
index 0000000..76de2ab
--- /dev/null
+++ b/node_modules/require_optional/test/nestedTest/index.js
@@ -0,0 +1,8 @@
+var require_optional = require('../../')
+
+function findPackage(packageName) {
+ var pkg = require_optional(packageName);
+ return pkg;
+}
+
+module.exports.findPackage = findPackage
diff --git a/node_modules/require_optional/test/nestedTest/package.json b/node_modules/require_optional/test/nestedTest/package.json
new file mode 100644
index 0000000..4c456a6
--- /dev/null
+++ b/node_modules/require_optional/test/nestedTest/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "nestedtest",
+ "version": "1.0.0",
+ "description": "A dummy package that facilitates testing that require_optional correctly walks up the module call stack",
+ "main": "index.js",
+ "scripts": {
+ "test": "echo \"Error: no test specified\" && exit 1"
+ },
+ "author": "Sebastian Hallum Clarke",
+ "license": "ISC"
+}
diff --git a/node_modules/require_optional/test/require_optional_tests.js b/node_modules/require_optional/test/require_optional_tests.js
new file mode 100644
index 0000000..c9cc2a3
--- /dev/null
+++ b/node_modules/require_optional/test/require_optional_tests.js
@@ -0,0 +1,59 @@
+var assert = require('assert'),
+ require_optional = require('../'),
+ nestedTest = require('./nestedTest');
+
+describe('Require Optional', function() {
+ describe('top level require', function() {
+ it('should correctly require co library', function() {
+ var promise = require_optional('es6-promise');
+ assert.ok(promise);
+ });
+
+ it('should fail to require es6-promise library', function() {
+ try {
+ require_optional('co');
+ } catch(e) {
+ assert.equal('OPTIONAL_MODULE_NOT_FOUND', e.code);
+ return;
+ }
+
+ assert.ok(false);
+ });
+
+ it('should ignore optional library not defined', function() {
+ assert.equal(undefined, require_optional('es6-promise2'));
+ });
+ });
+
+ describe('internal module file require', function() {
+ it('should correctly require co library', function() {
+ var Long = require_optional('bson/lib/bson/long.js');
+ assert.ok(Long);
+ });
+ });
+
+ describe('top level resolve', function() {
+ it('should correctly use exists method', function() {
+ assert.equal(false, require_optional.exists('co'));
+ assert.equal(true, require_optional.exists('es6-promise'));
+ assert.equal(true, require_optional.exists('bson/lib/bson/long.js'));
+ assert.equal(false, require_optional.exists('es6-promise2'));
+ });
+ });
+
+ describe('require_optional inside dependencies', function() {
+ it('should correctly walk up module call stack searching for peerOptionalDependencies', function() {
+ assert.ok(nestedTest.findPackage('bson'))
+ });
+ it('should return null when a package is defined in top-level package.json but not installed', function() {
+ assert.equal(null, nestedTest.findPackage('es6-promise2'))
+ });
+ it('should error when searching for an optional dependency that is not defined in any ancestor package.json', function() {
+ try {
+ nestedTest.findPackage('bison')
+ } catch (err) {
+ assert.equal(err.message, 'no optional dependency [bison] defined in peerOptionalDependencies in any package.json')
+ }
+ })
+ });
+});