-
Notifications
You must be signed in to change notification settings - Fork 193
/
Copy pathmissing.test.js
104 lines (102 loc) · 2.62 KB
/
missing.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
const path = require("path");
const resolve = require("../");
describe("missing", function () {
/**
* @type {Array<[string, string, Array<string>]>}
*/
const testCases = [
[
path.join(__dirname, "fixtures"),
"./missing-file",
[
path.join(__dirname, "fixtures", "missing-file"),
path.join(__dirname, "fixtures", "missing-file.js"),
path.join(__dirname, "fixtures", "missing-file.node")
]
],
[
path.join(__dirname, "fixtures"),
"missing-module",
[
path.join(__dirname, "fixtures", "node_modules", "missing-module"),
path.join(__dirname, "..", "node_modules", "missing-module")
]
],
[
path.join(__dirname, "fixtures"),
"missing-module/missing-file",
[
path.join(__dirname, "fixtures", "node_modules", "missing-module"),
path.join(__dirname, "..", "node_modules", "missing-module")
]
],
[
path.join(__dirname, "fixtures"),
"m1/missing-file",
[
path.join(__dirname, "fixtures", "node_modules", "m1", "missing-file"),
path.join(
__dirname,
"fixtures",
"node_modules",
"m1",
"missing-file.js"
),
path.join(
__dirname,
"fixtures",
"node_modules",
"m1",
"missing-file.node"
),
path.join(__dirname, "..", "node_modules", "m1")
]
],
[
path.join(__dirname, "fixtures"),
"m1/",
[
path.join(__dirname, "fixtures", "node_modules", "m1", "index"),
path.join(__dirname, "fixtures", "node_modules", "m1", "index.js"),
path.join(__dirname, "fixtures", "node_modules", "m1", "index.json"),
path.join(__dirname, "fixtures", "node_modules", "m1", "index.node")
]
],
[
path.join(__dirname, "fixtures"),
"m1/a",
[path.join(__dirname, "fixtures", "node_modules", "m1", "a")]
]
];
testCases.forEach(function (testCase) {
it(
"should tell about missing file when trying to resolve " + testCase[1],
done => {
const callback = function (err, filename) {
expect(Array.from(missingDependencies).sort()).toEqual(
expect.arrayContaining(testCase[2].sort())
);
done();
};
const missingDependencies = new Set();
resolve(testCase[0], testCase[1], { missingDependencies }, callback);
}
);
it(
"should report error details exactly once when trying to resolve " +
testCase[1],
done => {
const callback = function (err, filename) {
if (err) {
const details = err.details.split("\n");
const firstDetail = details.shift();
expect(firstDetail).toContain(testCase[1]);
expect(details).not.toContain(firstDetail);
}
done();
};
resolve(testCase[0], testCase[1], callback);
}
);
});
});