1 var path = require('path');
2 var test = require('tape');
3 var resolve = require('../');
5 test('foo', function (t) {
6 var dir = path.join(__dirname, 'resolver');
9 resolve.sync('./foo', { basedir: dir }),
10 path.join(dir, 'foo.js')
14 resolve.sync('./foo.js', { basedir: dir }),
15 path.join(dir, 'foo.js')
18 t.throws(function () {
19 resolve.sync('foo', { basedir: dir });
25 test('bar', function (t) {
26 var dir = path.join(__dirname, 'resolver');
29 resolve.sync('foo', { basedir: path.join(dir, 'bar') }),
30 path.join(dir, 'bar/node_modules/foo/index.js')
35 test('baz', function (t) {
36 var dir = path.join(__dirname, 'resolver');
39 resolve.sync('./baz', { basedir: dir }),
40 path.join(dir, 'baz/quux.js')
45 test('biz', function (t) {
46 var dir = path.join(__dirname, 'resolver/biz/node_modules');
48 resolve.sync('./grux', { basedir: dir }),
49 path.join(dir, 'grux/index.js')
53 resolve.sync('tiv', { basedir: path.join(dir, 'grux') }),
54 path.join(dir, 'tiv/index.js')
58 resolve.sync('grux', { basedir: path.join(dir, 'tiv') }),
59 path.join(dir, 'grux/index.js')
64 test('normalize', function (t) {
65 var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
67 resolve.sync('../grux', { basedir: dir }),
68 path.join(dir, 'index.js')
73 test('cup', function (t) {
74 var dir = path.join(__dirname, 'resolver');
76 resolve.sync('./cup', {
78 extensions: ['.js', '.coffee']
80 path.join(dir, 'cup.coffee')
84 resolve.sync('./cup.coffee', { basedir: dir }),
85 path.join(dir, 'cup.coffee')
88 t.throws(function () {
89 resolve.sync('./cup', {
98 test('mug', function (t) {
99 var dir = path.join(__dirname, 'resolver');
101 resolve.sync('./mug', { basedir: dir }),
102 path.join(dir, 'mug.js')
106 resolve.sync('./mug', {
108 extensions: ['.coffee', '.js']
110 path.join(dir, 'mug.coffee')
114 resolve.sync('./mug', {
116 extensions: ['.js', '.coffee']
118 path.join(dir, 'mug.js')
124 test('other path', function (t) {
125 var resolverDir = path.join(__dirname, 'resolver');
126 var dir = path.join(resolverDir, 'bar');
127 var otherDir = path.join(resolverDir, 'other_path');
130 resolve.sync('root', {
134 path.join(resolverDir, 'other_path/root.js')
138 resolve.sync('lib/other-lib', {
142 path.join(resolverDir, 'other_path/lib/other-lib.js')
145 t.throws(function () {
146 resolve.sync('root', { basedir: dir });
149 t.throws(function () {
150 resolve.sync('zzz', {
159 test('incorrect main', function (t) {
160 var resolverDir = path.join(__dirname, 'resolver');
161 var dir = path.join(resolverDir, 'incorrect_main');
164 resolve.sync('./incorrect_main', { basedir: resolverDir }),
165 path.join(dir, 'index.js')
171 test('#25: node modules with the same name as node stdlib modules', function (t) {
172 var resolverDir = path.join(__dirname, 'resolver/punycode');
175 resolve.sync('punycode', { basedir: resolverDir }),
176 path.join(resolverDir, 'node_modules/punycode/index.js')
182 var stubStatSync = function stubStatSync(fn) {
183 var fs = require('fs');
184 var statSync = fs.statSync;
186 fs.statSync = function () {
187 throw new EvalError('Unknown Error');
191 fs.statSync = statSync;
195 test('#79 - re-throw non ENOENT errors from stat', function (t) {
196 var dir = path.join(__dirname, 'resolver');
198 stubStatSync(function () {
199 t.throws(function () {
200 resolve.sync('foo', { basedir: dir });