-
Notifications
You must be signed in to change notification settings - Fork 193
/
Copy pathdependencies.test.js
110 lines (105 loc) · 2.61 KB
/
dependencies.test.js
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
const { Volume } = require("memfs");
const resolve = require("../");
describe("dependencies", function () {
let resolver;
beforeEach(function () {
const fileSystem = Volume.fromJSON(
{
"/a/b/node_modules/some-module/index.js": "",
"/a/node_modules/module/package.json": JSON.stringify({
main: "entry.js"
}),
"/a/node_modules/module/file.js": JSON.stringify({ main: "entry.js" }),
"/modules/other-module/file.js": ""
},
"/"
);
resolver = resolve.create({
extensions: [".json", ".js"],
modules: ["/modules", "node_modules"],
// @ts-ignore
fileSystem: fileSystem
});
});
const testCases = [
{
name: "middle module request",
context: "/a/b/c",
request: "module/file",
result: "/a/node_modules/module/file.js",
fileDependencies: [
// found package.json
"/a/node_modules/module/package.json",
// symlink checks
"/a/node_modules/module/file.js",
"/a/node_modules/module",
"/a/node_modules",
"/a",
"/"
],
missingDependencies: [
// missing package.jsons
"/a/b/c/package.json",
"/a/b/package.json",
"/a/package.json",
"/package.json",
// missing modules directories
"/a/b/c/node_modules",
// missing single file modules
"/modules/module",
"/a/b/node_modules/module",
// missing files with alterative extensions
"/a/node_modules/module/file",
"/a/node_modules/module/file.json"
]
},
{
name: "fast found module request",
context: "/a/b/c",
request: "other-module/file.js",
result: "/modules/other-module/file.js",
fileDependencies: [
// symlink checks
"/modules/other-module/file.js",
"/modules/other-module",
"/modules",
"/"
],
missingDependencies: [
// missing package.jsons
"/a/b/c/package.json",
"/a/b/package.json",
"/a/package.json",
"/package.json",
"/modules/other-module/package.json",
"/modules/package.json"
]
}
];
for (const testCase of testCases) {
// eslint-disable-next-line no-loop-func
it(`should report correct dependencies for ${testCase.name}`, done => {
const fileDependencies = new Set();
const missingDependencies = new Set();
resolver(
testCase.context,
testCase.request,
{
fileDependencies,
missingDependencies
},
(err, result) => {
if (err) return done(err);
expect(result).toEqual(testCase.result);
expect(Array.from(fileDependencies).sort()).toEqual(
testCase.fileDependencies.sort()
);
expect(Array.from(missingDependencies).sort()).toEqual(
testCase.missingDependencies.sort()
);
done();
}
);
});
}
});