1
1
import * as depGraphLib from '../../src' ;
2
+ import { graphToDepTree } from '../../src/legacy' ;
2
3
3
4
const dependencyName = 'needle' ;
4
5
@@ -10,11 +11,14 @@ async function generateLargeGraph(width: number) {
10
11
const rootNodeId = 'root-node' ;
11
12
12
13
const deepDependency = { name : dependencyName , version : '1.2.3' } ;
14
+ const deepDependency2 = { name : dependencyName + 2 , version : '1.2.3' } ;
13
15
14
16
builder . addPkgNode ( deepDependency , dependencyName ) ;
17
+ builder . addPkgNode ( deepDependency2 , deepDependency2 . name ) ;
15
18
builder . connectDep ( rootNodeId , dependencyName ) ;
19
+ builder . connectDep ( deepDependency . name , deepDependency2 . name ) ;
16
20
17
- for ( let j = 0 ; j < width ; j ++ ) {
21
+ for ( let j = 0 ; j < width / 2 ; j ++ ) {
18
22
const shallowName = `id-${ j } ` ;
19
23
const shallowDependency = { name : shallowName , version : '1.2.3' } ;
20
24
@@ -23,17 +27,34 @@ async function generateLargeGraph(width: number) {
23
27
builder . connectDep ( shallowName , dependencyName ) ;
24
28
}
25
29
30
+ for ( let j = 0 ; j < width / 2 ; j ++ ) {
31
+ const shallowName = `second-${ j } ` ;
32
+ const shallowDependency = { name : shallowName , version : '1.2.3' } ;
33
+
34
+ builder . addPkgNode ( shallowDependency , shallowName ) ;
35
+ builder . connectDep ( deepDependency2 . name , shallowName ) ;
36
+ }
37
+
26
38
return builder . build ( ) ;
27
39
}
28
40
29
41
describe ( 'stress tests' , ( ) => {
42
+ let graph ;
43
+ beforeAll ( async ( ) => {
44
+ graph = await generateLargeGraph ( 125000 ) ;
45
+ } ) ;
30
46
test ( 'pkgPathsToRoot() does not cause stack overflow for large dep-graphs' , async ( ) => {
31
- const graph = await generateLargeGraph ( 125000 ) ;
32
-
33
47
const result = graph . pkgPathsToRoot ( {
34
48
name : dependencyName ,
35
49
version : '1.2.3' ,
36
50
} ) ;
37
51
expect ( result ) . toBeDefined ( ) ;
38
52
} ) ;
53
+
54
+ test ( 'graphToDepTree() with memoization (without deduplicateWithinTopLevelDeps) succeed for large dep-graphs' , async ( ) => {
55
+ const depTree = await graphToDepTree ( graph , 'gomodules' , {
56
+ deduplicateWithinTopLevelDeps : false ,
57
+ } ) ;
58
+ expect ( depTree ) . toBeDefined ( ) ;
59
+ } ) ;
39
60
} ) ;
0 commit comments