Skip to content

Commit 5b7b7dd

Browse files
committed
Added 2 more hoisting unit tests
1 parent a5fe445 commit 5b7b7dd

File tree

21 files changed

+169
-0
lines changed

21 files changed

+169
-0
lines changed

test/commands/install.js

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,86 @@ test("install should dedupe dependencies avoiding conflicts 5", () => {
280280
});
281281
});
282282

283+
test("install should dedupe dependencies avoiding conflicts 6 (jest/jest-runtime case)", () => {
284+
// C@1 -> D@1 -> E@1
285+
// B@1 -> C@1 -> D@1 -> E@1
286+
// D@2
287+
// E@2
288+
289+
// should become
290+
291+
// C@1 -> D@1
292+
// -> E@1
293+
// B@1
294+
// D@2
295+
// E@2
296+
297+
return run({}, [], "install-should-dedupe-avoiding-conflicts-6", async (config) => {
298+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
299+
"node_modules/dep-b/package.json"))).version, "1.0.0");
300+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
301+
"node_modules/dep-c/package.json"))).version, "1.0.0");
302+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
303+
"node_modules/dep-d/package.json"))).version, "2.0.0");
304+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
305+
"node_modules/dep-e/package.json"))).version, "2.0.0");
306+
307+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
308+
"node_modules/dep-c/node_modules/dep-d/package.json"))).version, "1.0.0");
309+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
310+
"node_modules/dep-c/node_modules/dep-e/package.json"))).version, "1.0.0");
311+
});
312+
});
313+
314+
test("install should dedupe dependencies avoiding conflicts 7", () => {
315+
// A@1 -> C@1 -> D@1 -> E@1
316+
// B@1 -> C@1 -> D@1 -> E@1
317+
// C@2
318+
// D@2
319+
// E@2
320+
321+
// should become
322+
323+
// A@1 -> C@1
324+
// -> D@1
325+
// -> E@1
326+
// B@1 -> C@1
327+
// -> D@1
328+
// -> E@1
329+
// C@2
330+
// D@2
331+
// E@2
332+
333+
return run({}, [], "install-should-dedupe-avoiding-conflicts-7", async (config) => {
334+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
335+
"node_modules/dep-a/package.json"))).version, "1.0.0");
336+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
337+
"node_modules/dep-b/package.json"))).version, "1.0.0");
338+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
339+
"node_modules/dep-c/package.json"))).version, "2.0.0");
340+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
341+
"node_modules/dep-d/package.json"))).version, "2.0.0");
342+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
343+
"node_modules/dep-e/package.json"))).version, "2.0.0");
344+
345+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
346+
"node_modules/dep-a/node_modules/dep-c/package.json"))).version, "1.0.0");
347+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
348+
"node_modules/dep-a/node_modules/dep-d/package.json"))).version, "1.0.0");
349+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
350+
"node_modules/dep-a/node_modules/dep-e/package.json"))).version, "1.0.0");
351+
352+
353+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
354+
"node_modules/dep-b/node_modules/dep-c/package.json"))).version, "1.0.0");
355+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
356+
"node_modules/dep-b/node_modules/dep-d/package.json"))).version, "1.0.0");
357+
assert.equal(JSON.parse(await fs.readFile(path.join(config.cwd,
358+
"node_modules/dep-b/node_modules/dep-e/package.json"))).version, "1.0.0");
359+
360+
});
361+
});
362+
283363
test("upgrade scenario", () => {
284364
// left-pad first installed 0.0.9 then updated to 1.1.0
285365
// files in mirror, fbkpm.lock, package.json and node_modules should reflect that
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
kpm-offline-mirror=./mirror-for-offline
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
dep-b@1.0.0:
2+
name dep-b
3+
version "1.0.0"
4+
resolved dep-b-1.0.0.tgz#3ec41d539ec81cbb0b00f3f77cee143104153783
5+
dependencies:
6+
dep-c "1.0.0"
7+
dep-c@1.0.0:
8+
name dep-c
9+
version "1.0.0"
10+
resolved dep-c-1.0.0.tgz#43df1196c1b62b89ed7169b6b93493d8420763b6
11+
dependencies:
12+
dep-d "1.0.0"
13+
dep-d@1.0.0:
14+
name dep-d
15+
version "1.0.0"
16+
resolved dep-d-1.0.0.tgz#175ce924c6413b1feeb68b976ae769260cfe0d86
17+
dependencies:
18+
dep-e "1.0.0"
19+
dep-d@2.0.0:
20+
name dep-d
21+
version "2.0.0"
22+
resolved dep-d-2.0.0.tgz#ada909b78f52d88a60e9c8583ddc0310ff16da40
23+
dep-e@1.0.0:
24+
name dep-e
25+
version "1.0.0"
26+
resolved dep-e-1.0.0.tgz#8baa9f7eda12e71a95ccfce7e31ace5867617014
27+
dep-e@2.0.0:
28+
name dep-e
29+
version "2.0.0"
30+
resolved dep-e-2.0.0.tgz#c326a657226d79e68a2208f62a3f3f9f657416a9
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"dependencies": {
3+
"dep-b": "1.0.0",
4+
"dep-c": "1.0.0",
5+
"dep-d": "2.0.0",
6+
"dep-e": "2.0.0"
7+
}
8+
}

0 commit comments

Comments
 (0)