Initial commit
[yaffs-website] / node_modules / resolve / test / resolver_sync.js
1 var path = require('path');
2 var test = require('tape');
3 var resolve = require('../');
4
5 test('foo', function (t) {
6     var dir = path.join(__dirname, 'resolver');
7
8     t.equal(
9         resolve.sync('./foo', { basedir: dir }),
10         path.join(dir, 'foo.js')
11     );
12
13     t.equal(
14         resolve.sync('./foo.js', { basedir: dir }),
15         path.join(dir, 'foo.js')
16     );
17
18     t.throws(function () {
19         resolve.sync('foo', { basedir: dir });
20     });
21
22     t.end();
23 });
24
25 test('bar', function (t) {
26     var dir = path.join(__dirname, 'resolver');
27
28     t.equal(
29         resolve.sync('foo', { basedir: path.join(dir, 'bar') }),
30         path.join(dir, 'bar/node_modules/foo/index.js')
31     );
32     t.end();
33 });
34
35 test('baz', function (t) {
36     var dir = path.join(__dirname, 'resolver');
37
38     t.equal(
39         resolve.sync('./baz', { basedir: dir }),
40         path.join(dir, 'baz/quux.js')
41     );
42     t.end();
43 });
44
45 test('biz', function (t) {
46     var dir = path.join(__dirname, 'resolver/biz/node_modules');
47     t.equal(
48         resolve.sync('./grux', { basedir: dir }),
49         path.join(dir, 'grux/index.js')
50     );
51
52     t.equal(
53         resolve.sync('tiv', { basedir: path.join(dir, 'grux') }),
54         path.join(dir, 'tiv/index.js')
55     );
56
57     t.equal(
58         resolve.sync('grux', { basedir: path.join(dir, 'tiv') }),
59         path.join(dir, 'grux/index.js')
60     );
61     t.end();
62 });
63
64 test('normalize', function (t) {
65     var dir = path.join(__dirname, 'resolver/biz/node_modules/grux');
66     t.equal(
67         resolve.sync('../grux', { basedir: dir }),
68         path.join(dir, 'index.js')
69     );
70     t.end();
71 });
72
73 test('cup', function (t) {
74     var dir = path.join(__dirname, 'resolver');
75     t.equal(
76         resolve.sync('./cup', {
77             basedir: dir,
78             extensions: ['.js', '.coffee']
79         }),
80         path.join(dir, 'cup.coffee')
81     );
82
83     t.equal(
84         resolve.sync('./cup.coffee', { basedir: dir }),
85         path.join(dir, 'cup.coffee')
86     );
87
88     t.throws(function () {
89         resolve.sync('./cup', {
90             basedir: dir,
91             extensions: ['.js']
92         });
93     });
94
95     t.end();
96 });
97
98 test('mug', function (t) {
99     var dir = path.join(__dirname, 'resolver');
100     t.equal(
101         resolve.sync('./mug', { basedir: dir }),
102         path.join(dir, 'mug.js')
103     );
104
105     t.equal(
106         resolve.sync('./mug', {
107             basedir: dir,
108             extensions: ['.coffee', '.js']
109         }),
110         path.join(dir, 'mug.coffee')
111     );
112
113     t.equal(
114         resolve.sync('./mug', {
115             basedir: dir,
116             extensions: ['.js', '.coffee']
117         }),
118         path.join(dir, 'mug.js')
119     );
120
121     t.end();
122 });
123
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');
128
129     t.equal(
130         resolve.sync('root', {
131             basedir: dir,
132             paths: [otherDir]
133         }),
134         path.join(resolverDir, 'other_path/root.js')
135     );
136
137     t.equal(
138         resolve.sync('lib/other-lib', {
139             basedir: dir,
140             paths: [otherDir]
141         }),
142         path.join(resolverDir, 'other_path/lib/other-lib.js')
143     );
144
145     t.throws(function () {
146         resolve.sync('root', { basedir: dir });
147     });
148
149     t.throws(function () {
150         resolve.sync('zzz', {
151             basedir: dir,
152             paths: [otherDir]
153         });
154     });
155
156     t.end();
157 });
158
159 test('incorrect main', function (t) {
160     var resolverDir = path.join(__dirname, 'resolver');
161     var dir = path.join(resolverDir, 'incorrect_main');
162
163     t.equal(
164         resolve.sync('./incorrect_main', { basedir: resolverDir }),
165         path.join(dir, 'index.js')
166     );
167
168     t.end();
169 });
170
171 test('#25: node modules with the same name as node stdlib modules', function (t) {
172     var resolverDir = path.join(__dirname, 'resolver/punycode');
173
174     t.equal(
175         resolve.sync('punycode', { basedir: resolverDir }),
176         path.join(resolverDir, 'node_modules/punycode/index.js')
177     );
178
179     t.end();
180 });
181
182 var stubStatSync = function stubStatSync(fn) {
183     var fs = require('fs');
184     var statSync = fs.statSync;
185     try {
186         fs.statSync = function () {
187             throw new EvalError('Unknown Error');
188         };
189         return fn();
190     } finally {
191         fs.statSync = statSync;
192     }
193 };
194
195 test('#79 - re-throw non ENOENT errors from stat', function (t) {
196     var dir = path.join(__dirname, 'resolver');
197
198     stubStatSync(function () {
199         t.throws(function () {
200             resolve.sync('foo', { basedir: dir });
201         }, /Unknown Error/);
202     });
203
204     t.end();
205 });
206