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