| | |
| | | var path = require('path'); |
| | | var test = require('tape'); |
| | | var resolve = require('../'); |
| | | var async = require('../async'); |
| | | |
| | | test('`./async` entry point', function (t) { |
| | | t.equal(resolve, async, '`./async` entry point is the same as `main`'); |
| | | t.end(); |
| | | }); |
| | | |
| | | test('async foo', function (t) { |
| | | t.plan(12); |
| | |
| | | t.plan(1); |
| | | |
| | | var dir = path.join(__dirname, 'resolver/without_basedir'); |
| | | var tester = require(path.join(dir, 'main.js')); |
| | | var tester = require(path.join(dir, 'main.js')); // eslint-disable-line global-require |
| | | |
| | | tester(t, function (err, res, pkg) { |
| | | if (err) { |
| | |
| | | var dir = path.join(__dirname, 'resolver'); |
| | | resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) { |
| | | t.ok(err, 'errors on non-string main'); |
| | | t.equal(err.message, 'package “invalid main” `main` must be a string'); |
| | | t.equal(err.message, 'package “invalid_main” `main` must be a string'); |
| | | t.equal(err.code, 'INVALID_PACKAGE_MAIN'); |
| | | t.equal(res, undefined, 'res is undefined'); |
| | | t.equal(pkg, undefined, 'pkg is undefined'); |
| | |
| | | var dir = path.join(__dirname, 'resolver'); |
| | | resolve('./invalid_main', { basedir: dir }, function (err, res, pkg) { |
| | | t.ok(err, 'errors on non-string main'); |
| | | t.equal(err.message, 'package “invalid main” `main` must be a string'); |
| | | t.equal(err.message, 'package “invalid_main” `main` must be a string'); |
| | | t.equal(err.code, 'INVALID_PACKAGE_MAIN'); |
| | | t.equal(res, undefined, 'res is undefined'); |
| | | t.equal(pkg, undefined, 'pkg is undefined'); |
| | |
| | | } |
| | | ); |
| | | }); |
| | | |
| | | test('absolute paths', function (t) { |
| | | t.plan(4); |
| | | |
| | | var extensionless = __filename.slice(0, -path.extname(__filename).length); |
| | | |
| | | resolve(__filename, function (err, res) { |
| | | t.equal( |
| | | res, |
| | | __filename, |
| | | 'absolute path to this file resolves' |
| | | ); |
| | | }); |
| | | resolve(extensionless, function (err, res) { |
| | | t.equal( |
| | | res, |
| | | __filename, |
| | | 'extensionless absolute path to this file resolves' |
| | | ); |
| | | }); |
| | | resolve(__filename, { basedir: process.cwd() }, function (err, res) { |
| | | t.equal( |
| | | res, |
| | | __filename, |
| | | 'absolute path to this file with a basedir resolves' |
| | | ); |
| | | }); |
| | | resolve(extensionless, { basedir: process.cwd() }, function (err, res) { |
| | | t.equal( |
| | | res, |
| | | __filename, |
| | | 'extensionless absolute path to this file with a basedir resolves' |
| | | ); |
| | | }); |
| | | }); |
| | | |
| | | test('malformed package.json', function (t) { |
| | | /* eslint operator-linebreak: ["error", "before"], function-paren-newline: "off" */ |
| | | t.plan( |
| | | (3 * 3) // 3 sets of 3 assertions in the final callback |
| | | + 2 // 1 readPackage call with malformed package.json |
| | | ); |
| | | |
| | | var basedir = path.join(__dirname, 'resolver/malformed_package_json'); |
| | | var expected = path.join(basedir, 'index.js'); |
| | | |
| | | resolve('./index.js', { basedir: basedir }, function (err, res, pkg) { |
| | | t.error(err, 'no error'); |
| | | t.equal(res, expected, 'malformed package.json is silently ignored'); |
| | | t.equal(pkg, undefined, 'malformed package.json gives an undefined `pkg` argument'); |
| | | }); |
| | | |
| | | resolve( |
| | | './index.js', |
| | | { |
| | | basedir: basedir, |
| | | packageFilter: function (pkg, pkgfile, dir) { |
| | | t.fail('should not reach here'); |
| | | } |
| | | }, |
| | | function (err, res, pkg) { |
| | | t.error(err, 'with packageFilter: no error'); |
| | | t.equal(res, expected, 'with packageFilter: malformed package.json is silently ignored'); |
| | | t.equal(pkg, undefined, 'with packageFilter: malformed package.json gives an undefined `pkg` argument'); |
| | | } |
| | | ); |
| | | |
| | | resolve( |
| | | './index.js', |
| | | { |
| | | basedir: basedir, |
| | | readPackage: function (readFile, pkgfile, cb) { |
| | | t.equal(pkgfile, path.join(basedir, 'package.json'), 'readPackageSync: `pkgfile` is package.json path'); |
| | | readFile(pkgfile, function (err, result) { |
| | | try { |
| | | cb(null, JSON.parse(result)); |
| | | } catch (e) { |
| | | t.ok(e instanceof SyntaxError, 'readPackage: malformed package.json parses as a syntax error'); |
| | | cb(null); |
| | | } |
| | | }); |
| | | } |
| | | }, |
| | | function (err, res, pkg) { |
| | | t.error(err, 'with readPackage: no error'); |
| | | t.equal(res, expected, 'with readPackage: malformed package.json is silently ignored'); |
| | | t.equal(pkg, undefined, 'with readPackage: malformed package.json gives an undefined `pkg` argument'); |
| | | } |
| | | ); |
| | | }); |