1 | var fs = require('fs');
|
2 | var path = require('path');
|
3 | var test = require('tape');
|
4 | var resolve = require('../');
|
5 |
|
6 | test('$NODE_PATH', function (t) {
|
7 | t.plan(8);
|
8 |
|
9 | var isDir = function (dir, cb) {
|
10 | if (dir === '/node_path' || dir === 'node_path/x') {
|
11 | return cb(null, true);
|
12 | }
|
13 | fs.stat(dir, function (err, stat) {
|
14 | if (!err) {
|
15 | return cb(null, stat.isDirectory());
|
16 | }
|
17 | if (err.code === 'ENOENT' || err.code === 'ENOTDIR') return cb(null, false);
|
18 | return cb(err);
|
19 | });
|
20 | };
|
21 |
|
22 | resolve('aaa', {
|
23 | paths: [
|
24 | path.join(__dirname, '/node_path/x'),
|
25 | path.join(__dirname, '/node_path/y')
|
26 | ],
|
27 | basedir: __dirname,
|
28 | isDirectory: isDir
|
29 | }, function (err, res) {
|
30 | t.error(err);
|
31 | t.equal(res, path.join(__dirname, '/node_path/x/aaa/index.js'), 'aaa resolves');
|
32 | });
|
33 |
|
34 | resolve('bbb', {
|
35 | paths: [
|
36 | path.join(__dirname, '/node_path/x'),
|
37 | path.join(__dirname, '/node_path/y')
|
38 | ],
|
39 | basedir: __dirname,
|
40 | isDirectory: isDir
|
41 | }, function (err, res) {
|
42 | t.error(err);
|
43 | t.equal(res, path.join(__dirname, '/node_path/y/bbb/index.js'), 'bbb resolves');
|
44 | });
|
45 |
|
46 | resolve('ccc', {
|
47 | paths: [
|
48 | path.join(__dirname, '/node_path/x'),
|
49 | path.join(__dirname, '/node_path/y')
|
50 | ],
|
51 | basedir: __dirname,
|
52 | isDirectory: isDir
|
53 | }, function (err, res) {
|
54 | t.error(err);
|
55 | t.equal(res, path.join(__dirname, '/node_path/x/ccc/index.js'), 'ccc resolves');
|
56 | });
|
57 |
|
58 |
|
59 | resolve('tap', {
|
60 | paths: [
|
61 | 'node_path'
|
62 | ],
|
63 | basedir: path.join(__dirname, 'node_path/x'),
|
64 | isDirectory: isDir
|
65 | }, function (err, res) {
|
66 | var root = require('tap/package.json').main;
|
67 | t.error(err);
|
68 | t.equal(res, path.resolve(__dirname, '..', 'node_modules/tap', root), 'tap resolves');
|
69 | });
|
70 | });
|