react / wstein / node_modules / jest-cli / node_modules / istanbul / node_modules / resolve / test / resolver.js
80684 viewsvar path = require('path');1var test = require('tape');2var resolve = require('../');34test('async foo', function (t) {5t.plan(9);6var dir = __dirname + '/resolver';78resolve('./foo', { basedir : dir }, function (err, res, pkg) {9if (err) t.fail(err);10t.equal(res, dir + '/foo.js');11t.equal(pkg.name, 'resolve');12});1314resolve('./foo.js', { basedir : dir }, function (err, res, pkg) {15if (err) t.fail(err);16t.equal(res, dir + '/foo.js');17t.equal(pkg.name, 'resolve');18});1920resolve('./foo', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {21if (err) t.fail(err);22t.equal(res, dir + '/foo.js');23t.equal(pkg.main, 'resolver');24});2526resolve('./foo.js', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {27if (err) t.fail(err);28t.equal(res, dir + '/foo.js');29t.equal(pkg.main, 'resolver');30});3132resolve('foo', { basedir : dir }, function (err) {33t.equal(err.message, "Cannot find module 'foo' from '" + path.resolve(dir) + "'");34});35});3637test('bar', function (t) {38t.plan(6);39var dir = __dirname + '/resolver';4041resolve('foo', { basedir : dir + '/bar' }, function (err, res, pkg) {42if (err) t.fail(err);43t.equal(res, dir + '/bar/node_modules/foo/index.js');44t.equal(pkg, undefined);45});4647resolve('foo', { basedir : dir + '/bar' }, function (err, res, pkg) {48if (err) t.fail(err);49t.equal(res, dir + '/bar/node_modules/foo/index.js');50t.equal(pkg, undefined);51});5253resolve('foo', { basedir : dir + '/bar', package: { main: 'bar' } }, function (err, res, pkg) {54if (err) t.fail(err);55t.equal(res, dir + '/bar/node_modules/foo/index.js');56t.equal(pkg, undefined);57});58});5960test('baz', function (t) {61t.plan(4);62var dir = __dirname + '/resolver';6364resolve('./baz', { basedir : dir }, function (err, res, pkg) {65if (err) t.fail(err);66t.equal(res, dir + '/baz/quux.js');67t.equal(pkg.main, 'quux.js');68});6970resolve('./baz', { basedir : dir, package: { main: 'resolver' } }, function (err, res, pkg) {71if (err) t.fail(err);72t.equal(res, dir + '/baz/quux.js');73t.equal(pkg.main, 'quux.js');74});75});7677test('biz', function (t) {78t.plan(24);79var dir = __dirname + '/resolver/biz/node_modules';8081resolve('./grux', { basedir : dir }, function (err, res, pkg) {82if (err) t.fail(err);83t.equal(res, dir + '/grux/index.js');84t.equal(pkg, undefined);85});8687resolve('./grux', { basedir : dir, package: { main: 'biz' } }, function (err, res, pkg) {88if (err) t.fail(err);89t.equal(res, dir + '/grux/index.js');90t.equal(pkg.main, 'biz');91});9293resolve('./garply', { basedir : dir }, function (err, res, pkg) {94if (err) t.fail(err);95t.equal(res, dir + '/garply/lib/index.js');96t.equal(pkg.main, './lib');97});9899resolve('./garply', { basedir : dir, package: { main: 'biz' } }, function (err, res, pkg) {100if (err) t.fail(err);101t.equal(res, dir + '/garply/lib/index.js');102t.equal(pkg.main, './lib');103});104105resolve('tiv', { basedir : dir + '/grux' }, function (err, res, pkg) {106if (err) t.fail(err);107t.equal(res, dir + '/tiv/index.js');108t.equal(pkg, undefined);109});110111resolve('tiv', { basedir : dir + '/grux', package: { main: 'grux' } }, function (err, res, pkg) {112if (err) t.fail(err);113t.equal(res, dir + '/tiv/index.js');114t.equal(pkg, undefined);115});116117resolve('tiv', { basedir : dir + '/garply' }, function (err, res, pkg) {118if (err) t.fail(err);119t.equal(res, dir + '/tiv/index.js');120t.equal(pkg, undefined);121});122123resolve('tiv', { basedir : dir + '/garply', package: { main: './lib' } }, function (err, res, pkg) {124if (err) t.fail(err);125t.equal(res, dir + '/tiv/index.js');126t.equal(pkg, undefined);127});128129resolve('grux', { basedir : dir + '/tiv' }, function (err, res, pkg) {130if (err) t.fail(err);131t.equal(res, dir + '/grux/index.js');132t.equal(pkg, undefined);133});134135resolve('grux', { basedir : dir + '/tiv', package: { main: 'tiv' } }, function (err, res, pkg) {136if (err) t.fail(err);137t.equal(res, dir + '/grux/index.js');138t.equal(pkg, undefined);139});140141resolve('garply', { basedir : dir + '/tiv' }, function (err, res, pkg) {142if (err) t.fail(err);143t.equal(res, dir + '/garply/lib/index.js');144t.equal(pkg.main, './lib');145});146147resolve('garply', { basedir : dir + '/tiv', package: { main: 'tiv' } }, function (err, res, pkg) {148if (err) t.fail(err);149t.equal(res, dir + '/garply/lib/index.js');150t.equal(pkg.main, './lib');151});152});153154test('quux', function (t) {155t.plan(2);156var dir = __dirname + '/resolver/quux';157158resolve('./foo', { basedir : dir, package: { main: 'quux' } }, function (err, res, pkg) {159if (err) t.fail(err);160t.equal(res, dir + '/foo/index.js');161t.equal(pkg.main, 'quux');162});163});164165test('normalize', function (t) {166t.plan(2);167var dir = __dirname + '/resolver/biz/node_modules/grux';168169resolve('../grux', { basedir : dir }, function (err, res, pkg) {170if (err) t.fail(err);171t.equal(res, dir + '/index.js');172t.equal(pkg, undefined);173});174});175176test('cup', function (t) {177t.plan(3);178var dir = __dirname + '/resolver';179180resolve('./cup', { basedir : dir, extensions : [ '.js', '.coffee' ] },181function (err, res) {182if (err) t.fail(err);183t.equal(res, dir + '/cup.coffee');184});185186resolve('./cup.coffee', { basedir : dir }, function (err, res) {187if (err) t.fail(err);188t.equal(res, dir + '/cup.coffee');189});190191resolve('./cup', { basedir : dir, extensions : [ '.js' ] },192function (err, res) {193t.equal(err.message, "Cannot find module './cup' from '" + path.resolve(dir) + "'");194});195});196197test('mug', function (t) {198t.plan(3);199var dir = __dirname + '/resolver';200201resolve('./mug', { basedir : dir }, function (err, res) {202if (err) t.fail(err);203t.equal(res, dir + '/mug.js');204});205206resolve('./mug', { basedir : dir, extensions : [ '.coffee', '.js' ] },207function (err, res) {208if (err) t.fail(err);209t.equal(res, dir + '/mug.coffee');210});211212resolve('./mug', { basedir : dir, extensions : [ '.js', '.coffee' ] },213function (err, res) {214t.equal(res, dir + '/mug.js');215});216});217218test('other path', function (t) {219t.plan(4);220var resolverDir = __dirname + '/resolver';221var dir = resolverDir + '/bar';222var otherDir = resolverDir + '/other_path';223224resolve('root', { basedir : dir, paths: [otherDir] }, function (err, res) {225if (err) t.fail(err);226t.equal(res, resolverDir + '/other_path/root.js');227});228229resolve('lib/other-lib', { basedir : dir, paths: [otherDir] },230function (err, res) {231if (err) t.fail(err);232t.equal(res, resolverDir + '/other_path/lib/other-lib.js');233});234235resolve('root', { basedir : dir, }, function (err, res) {236t.equal(err.message, "Cannot find module 'root' from '" + path.resolve(dir) + "'");237});238239resolve('zzz', { basedir : dir, paths: [otherDir] }, function (err, res) {240t.equal(err.message, "Cannot find module 'zzz' from '" + path.resolve(dir) + "'");241});242});243244test('incorrect main', function (t) {245t.plan(1)246247var resolverDir = __dirname + '/resolver';248var dir = resolverDir + '/incorrect_main';249250resolve('./incorrect_main', { basedir : resolverDir }, function (err, res, pkg) {251if (err) t.fail(err);252t.equal(res, dir + '/index.js');253});254});255256test('without basedir', function (t) {257t.plan(1);258259var dir = __dirname + '/resolver/without_basedir';260var tester = require(dir + '/main.js');261262tester(t, function (err, res, pkg){263if (err) {264t.fail(err);265} else {266t.equal(res, dir + '/node_modules/mymodule.js');267}268});269});270271test('#25: node modules with the same name as node stdlib modules', function (t) {272t.plan(1);273274var resolverDir = __dirname + '/resolver/punycode';275276resolve('punycode', { basedir : resolverDir }, function (err, res, pkg) {277if (err) t.fail(err);278t.equal(res, resolverDir + '/node_modules/punycode/index.js');279});280});281282283