Skip to content

Commit c037147

Browse files
committed
fix: equals fail in case if same graphs has different node IDs
1 parent 771907e commit c037147

7 files changed

+319
-141
lines changed

src/core/dep-graph.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ class DepGraphImpl implements types.DepGraphInternal {
219219
}
220220

221221
let depsA = graphA.getNodeDepsNodeIds(nodeIdA);
222-
let depsB = graphB.getNodeDepsNodeIds(nodeIdA);
222+
let depsB = graphB.getNodeDepsNodeIds(nodeIdB);
223223

224224
// Number of dependencies should be the same.
225225
if (depsA.length !== depsB.length) {

test/core/equals.test.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ describe('equals', () => {
3838
});
3939

4040
test('different nodes order', async () => {
41-
const a = depGraphLib.createFromJSON(helpers.loadFixture('equals/simple.json'));
42-
const b = depGraphLib.createFromJSON(helpers.loadFixture('equals/simple-wrong-nodes-order.json'));
41+
const a = depGraphLib.createFromJSON(helpers.loadFixture('equals/simple-wrong-nodes-order-a.json'));
42+
const b = depGraphLib.createFromJSON(helpers.loadFixture('equals/simple-wrong-nodes-order-b.json'));
4343

4444
expect(a.equals(b, {compareRoot: false})).toBe(false);
4545
expect(b.equals(a, {compareRoot: false})).toBe(false);
@@ -79,4 +79,12 @@ describe('equals', () => {
7979

8080
expect(a.equals(b)).toBe(true);
8181
});
82+
83+
test('same graphs with different node IDs', async () => {
84+
const a = depGraphLib.createFromJSON(helpers.loadFixture('equals/different-node-id-a.json'));
85+
const b = depGraphLib.createFromJSON(helpers.loadFixture('equals/different-node-id-b.json'));
86+
87+
expect(a.equals(b, {compareRoot: false})).toBe(true);
88+
expect(b.equals(a, {compareRoot: false})).toBe(true);
89+
});
8290
});
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"schemaVersion": "1.2.0",
3+
"pkgManager": {
4+
"name": "maven"
5+
},
6+
"pkgs": [
7+
{
8+
9+
"info": {
10+
"name": "root",
11+
"version": "0.0.0"
12+
}
13+
},
14+
{
15+
16+
"info": {
17+
"name": "a",
18+
"version": "0.0.0"
19+
}
20+
}
21+
],
22+
"graph": {
23+
"rootNodeId": "root-node",
24+
"nodes": [
25+
{
26+
"nodeId": "root-node",
27+
"pkgId": "[email protected]",
28+
"deps": [
29+
{
30+
"nodeId": "[email protected]"
31+
}
32+
]
33+
},
34+
{
35+
"nodeId": "[email protected]",
36+
"pkgId": "[email protected]",
37+
"deps": []
38+
}
39+
]
40+
}
41+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
{
2+
"schemaVersion": "1.2.0",
3+
"pkgManager": {
4+
"name": "maven"
5+
},
6+
"pkgs": [
7+
{
8+
9+
"info": {
10+
"name": "root",
11+
"version": "0.0.0"
12+
}
13+
},
14+
{
15+
16+
"info": {
17+
"name": "a",
18+
"version": "0.0.0"
19+
}
20+
}
21+
],
22+
"graph": {
23+
"rootNodeId": "root-node",
24+
"nodes": [
25+
{
26+
"nodeId": "root-node",
27+
"pkgId": "[email protected]",
28+
"deps": [
29+
{
30+
"nodeId": "[email protected]|123"
31+
}
32+
]
33+
},
34+
{
35+
"nodeId": "[email protected]|123",
36+
"pkgId": "[email protected]",
37+
"deps": []
38+
}
39+
]
40+
}
41+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
{
2+
"schemaVersion": "1.2.0",
3+
"pkgManager": {
4+
"name": "maven"
5+
},
6+
"pkgs": [
7+
{
8+
9+
"info": {
10+
"name": "root",
11+
"version": "0.0.0"
12+
}
13+
},
14+
{
15+
16+
"info": {
17+
"name": "a",
18+
"version": "0.0.0"
19+
}
20+
},
21+
{
22+
23+
"info": {
24+
"name": "b",
25+
"version": "0.0.0"
26+
}
27+
},
28+
{
29+
30+
"info": {
31+
"name": "c",
32+
"version": "0.0.0"
33+
}
34+
},
35+
{
36+
37+
"info": {
38+
"name": "d",
39+
"version": "0.0.0"
40+
}
41+
},
42+
{
43+
44+
"info": {
45+
"name": "e",
46+
"version": "0.0.0"
47+
}
48+
}
49+
],
50+
"graph": {
51+
"rootNodeId": "root-node",
52+
"nodes": [
53+
{
54+
"nodeId": "root-node",
55+
"pkgId": "[email protected]",
56+
"deps": [
57+
{
58+
"nodeId": "[email protected]"
59+
},
60+
{
61+
"nodeId": "[email protected]"
62+
}
63+
]
64+
},
65+
{
66+
"nodeId": "[email protected]",
67+
"pkgId": "[email protected]",
68+
"deps": [
69+
{
70+
"nodeId": "[email protected]|1"
71+
}
72+
]
73+
},
74+
{
75+
"nodeId": "[email protected]",
76+
"pkgId": "[email protected]",
77+
"deps": [
78+
{
79+
"nodeId": "[email protected]|2"
80+
}
81+
]
82+
},
83+
{
84+
"nodeId": "[email protected]|1",
85+
"pkgId": "[email protected]",
86+
"deps": [
87+
{
88+
"nodeId": "[email protected]"
89+
}
90+
]
91+
},
92+
{
93+
"nodeId": "[email protected]",
94+
"pkgId": "[email protected]",
95+
"deps": []
96+
},
97+
{
98+
"nodeId": "[email protected]|2",
99+
"pkgId": "[email protected]",
100+
"deps": [
101+
{
102+
"nodeId": "[email protected]"
103+
}
104+
]
105+
},
106+
{
107+
"nodeId": "[email protected]",
108+
"pkgId": "[email protected]",
109+
"deps": []
110+
}
111+
]
112+
}
113+
}
Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
{
2+
"schemaVersion": "1.2.0",
3+
"pkgManager": {
4+
"name": "maven"
5+
},
6+
"pkgs": [
7+
{
8+
9+
"info": {
10+
"name": "root",
11+
"version": "0.0.0"
12+
}
13+
},
14+
{
15+
16+
"info": {
17+
"name": "a",
18+
"version": "0.0.0"
19+
}
20+
},
21+
{
22+
23+
"info": {
24+
"name": "b",
25+
"version": "0.0.0"
26+
}
27+
},
28+
{
29+
30+
"info": {
31+
"name": "c",
32+
"version": "0.0.0"
33+
}
34+
},
35+
{
36+
37+
"info": {
38+
"name": "d",
39+
"version": "0.0.0"
40+
}
41+
},
42+
{
43+
44+
"info": {
45+
"name": "e",
46+
"version": "0.0.0"
47+
}
48+
}
49+
],
50+
"graph": {
51+
"rootNodeId": "root-node",
52+
"nodes": [
53+
{
54+
"nodeId": "root-node",
55+
"pkgId": "[email protected]",
56+
"deps": [
57+
{
58+
"nodeId": "[email protected]"
59+
},
60+
{
61+
"nodeId": "[email protected]"
62+
}
63+
]
64+
},
65+
{
66+
"nodeId": "[email protected]",
67+
"pkgId": "[email protected]",
68+
"deps": [
69+
{
70+
"nodeId": "[email protected]|2"
71+
}
72+
]
73+
},
74+
{
75+
"nodeId": "[email protected]",
76+
"pkgId": "[email protected]",
77+
"deps": [
78+
{
79+
"nodeId": "[email protected]|1"
80+
}
81+
]
82+
},
83+
{
84+
"nodeId": "[email protected]|1",
85+
"pkgId": "[email protected]",
86+
"deps": [
87+
{
88+
"nodeId": "[email protected]"
89+
}
90+
]
91+
},
92+
{
93+
"nodeId": "[email protected]",
94+
"pkgId": "[email protected]",
95+
"deps": []
96+
},
97+
{
98+
"nodeId": "[email protected]|2",
99+
"pkgId": "[email protected]",
100+
"deps": [
101+
{
102+
"nodeId": "[email protected]"
103+
}
104+
]
105+
},
106+
{
107+
"nodeId": "[email protected]",
108+
"pkgId": "[email protected]",
109+
"deps": []
110+
}
111+
]
112+
}
113+
}

0 commit comments

Comments
 (0)