1 | var path = require('path');
|
2 | var test = require('tape');
|
3 | var resolve = require('../');
|
4 |
|
5 | test('mock', function (t) {
|
6 | t.plan(4);
|
7 |
|
8 | var files = {};
|
9 | files[path.resolve('/foo/bar/baz.js')] = 'beep';
|
10 |
|
11 | var dirs = {};
|
12 | dirs[path.resolve('/foo/bar')] = true;
|
13 |
|
14 | function opts(basedir) {
|
15 | return {
|
16 | basedir: path.resolve(basedir),
|
17 | isFile: function (file) {
|
18 | return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
|
19 | },
|
20 | isDirectory: function (dir) {
|
21 | return !!dirs[path.resolve(dir)];
|
22 | },
|
23 | readFileSync: function (file) {
|
24 | return files[path.resolve(file)];
|
25 | }
|
26 | };
|
27 | }
|
28 |
|
29 | t.equal(
|
30 | resolve.sync('./baz', opts('/foo/bar')),
|
31 | path.resolve('/foo/bar/baz.js')
|
32 | );
|
33 |
|
34 | t.equal(
|
35 | resolve.sync('./baz.js', opts('/foo/bar')),
|
36 | path.resolve('/foo/bar/baz.js')
|
37 | );
|
38 |
|
39 | t.throws(function () {
|
40 | resolve.sync('baz', opts('/foo/bar'));
|
41 | });
|
42 |
|
43 | t.throws(function () {
|
44 | resolve.sync('../baz', opts('/foo/bar'));
|
45 | });
|
46 | });
|
47 |
|
48 | test('mock package', function (t) {
|
49 | t.plan(1);
|
50 |
|
51 | var files = {};
|
52 | files[path.resolve('/foo/node_modules/bar/baz.js')] = 'beep';
|
53 | files[path.resolve('/foo/node_modules/bar/package.json')] = JSON.stringify({
|
54 | main: './baz.js'
|
55 | });
|
56 |
|
57 | var dirs = {};
|
58 | dirs[path.resolve('/foo')] = true;
|
59 | dirs[path.resolve('/foo/node_modules')] = true;
|
60 |
|
61 | function opts(basedir) {
|
62 | return {
|
63 | basedir: path.resolve(basedir),
|
64 | isFile: function (file) {
|
65 | return Object.prototype.hasOwnProperty.call(files, path.resolve(file));
|
66 | },
|
67 | isDirectory: function (dir) {
|
68 | return !!dirs[path.resolve(dir)];
|
69 | },
|
70 | readFileSync: function (file) {
|
71 | return files[path.resolve(file)];
|
72 | }
|
73 | };
|
74 | }
|
75 |
|
76 | t.equal(
|
77 | resolve.sync('bar', opts('/foo')),
|
78 | path.resolve('/foo/node_modules/bar/baz.js')
|
79 | );
|
80 | });
|