@@ -2,6 +2,7 @@ import { join } from "path";
2
2
3
3
import {
4
4
containsPath ,
5
+ findCommonParentDir ,
5
6
gatherQlFiles ,
6
7
getDirectoryNamesInsidePath ,
7
8
pathsEqual ,
@@ -11,6 +12,7 @@ import {
11
12
import type { DirResult } from "tmp" ;
12
13
import { dirSync } from "tmp" ;
13
14
import { ensureDirSync , symlinkSync , writeFileSync } from "fs-extra" ;
15
+ import "../../matchers/toEqualPath" ;
14
16
15
17
describe ( "files" , ( ) => {
16
18
const dataDir = join ( __dirname , "../../data" ) ;
@@ -62,9 +64,29 @@ describe("files", () => {
62
64
const file4 = join ( dataDir , "multiple-result-sets.ql" ) ;
63
65
const file5 = join ( dataDir , "query.ql" ) ;
64
66
67
+ const vaDir = join ( dataDir , "variant-analysis-query-packs" ) ;
68
+ const file6 = join ( vaDir , "workspace1" , "dir1" , "query1.ql" ) ;
69
+ const file7 = join ( vaDir , "workspace1" , "pack1" , "query1.ql" ) ;
70
+ const file8 = join ( vaDir , "workspace1" , "pack1" , "query2.ql" ) ;
71
+ const file9 = join ( vaDir , "workspace1" , "pack2" , "query1.ql" ) ;
72
+ const file10 = join ( vaDir , "workspace1" , "query1.ql" ) ;
73
+ const file11 = join ( vaDir , "workspace2" , "query1.ql" ) ;
74
+
65
75
const result = await gatherQlFiles ( [ dataDir ] ) ;
66
76
expect ( result . sort ( ) ) . toEqual ( [
67
- [ file1 , file2 , file3 , file4 , file5 ] ,
77
+ [
78
+ file1 ,
79
+ file2 ,
80
+ file3 ,
81
+ file4 ,
82
+ file5 ,
83
+ file6 ,
84
+ file7 ,
85
+ file8 ,
86
+ file9 ,
87
+ file10 ,
88
+ file11 ,
89
+ ] ,
68
90
true ,
69
91
] ) ;
70
92
} ) ;
@@ -88,10 +110,30 @@ describe("files", () => {
88
110
const file4 = join ( dataDir , "multiple-result-sets.ql" ) ;
89
111
const file5 = join ( dataDir , "query.ql" ) ;
90
112
113
+ const vaDir = join ( dataDir , "variant-analysis-query-packs" ) ;
114
+ const file6 = join ( vaDir , "workspace1" , "dir1" , "query1.ql" ) ;
115
+ const file7 = join ( vaDir , "workspace1" , "pack1" , "query1.ql" ) ;
116
+ const file8 = join ( vaDir , "workspace1" , "pack1" , "query2.ql" ) ;
117
+ const file9 = join ( vaDir , "workspace1" , "pack2" , "query1.ql" ) ;
118
+ const file10 = join ( vaDir , "workspace1" , "query1.ql" ) ;
119
+ const file11 = join ( vaDir , "workspace2" , "query1.ql" ) ;
120
+
91
121
const result = await gatherQlFiles ( [ file1 , dataDir , file3 , file4 , file5 ] ) ;
92
122
result [ 0 ] . sort ( ) ;
93
123
expect ( result . sort ( ) ) . toEqual ( [
94
- [ file1 , file2 , file3 , file4 , file5 ] ,
124
+ [
125
+ file1 ,
126
+ file2 ,
127
+ file3 ,
128
+ file4 ,
129
+ file5 ,
130
+ file6 ,
131
+ file7 ,
132
+ file8 ,
133
+ file9 ,
134
+ file10 ,
135
+ file11 ,
136
+ ] ,
95
137
true ,
96
138
] ) ;
97
139
} ) ;
@@ -417,3 +459,41 @@ describe("walkDirectory", () => {
417
459
expect ( files . sort ( ) ) . toEqual ( [ file1 , file2 , file3 , file4 , file5 , file6 ] ) ;
418
460
} ) ;
419
461
} ) ;
462
+
463
+ describe ( "findCommonParentDir" , ( ) => {
464
+ it ( "should find the common parent dir for multiple paths with common parent" , ( ) => {
465
+ const paths = [
466
+ join ( "foo" , "bar" , "baz" ) ,
467
+ join ( "foo" , "bar" , "qux" ) ,
468
+ join ( "foo" , "bar" , "quux" ) ,
469
+ ] ;
470
+
471
+ const commonDir = findCommonParentDir ( ...paths ) ;
472
+
473
+ expect ( commonDir ) . toEqualPath ( join ( "foo" , "bar" ) ) ;
474
+ } ) ;
475
+
476
+ it ( "should return the root if paths have no common parent other than root" , ( ) => {
477
+ const paths = [
478
+ join ( "foo" , "bar" , "baz" ) ,
479
+ join ( "qux" , "quux" , "corge" ) ,
480
+ join ( "grault" , "garply" ) ,
481
+ ] ;
482
+
483
+ const commonDir = findCommonParentDir ( ...paths ) ;
484
+
485
+ expect ( commonDir ) . toEqualPath ( "" ) ;
486
+ } ) ;
487
+
488
+ it ( "should return empty string for relative paths with no common parent" , ( ) => {
489
+ const paths = [
490
+ join ( "foo" , "bar" , "baz" ) ,
491
+ join ( "qux" , "quux" , "corge" ) ,
492
+ join ( "grault" , "garply" ) ,
493
+ ] ;
494
+
495
+ const commonDir = findCommonParentDir ( ...paths ) ;
496
+
497
+ expect ( commonDir ) . toEqualPath ( "" ) ;
498
+ } ) ;
499
+ } ) ;
0 commit comments