@@ -21,6 +21,7 @@ import { DirResult } from 'tmp';
2121import {
2222 getInitialQueryContents ,
2323 InvocationRateLimiter ,
24+ isLikelyDatabaseRoot ,
2425 isLikelyDbLanguageFolder ,
2526 showBinaryChoiceDialog ,
2627 showBinaryChoiceWithUrlDialog ,
@@ -150,11 +151,65 @@ describe('helpers', () => {
150151 it ( 'should get initial query contents when nothing is known' , ( ) => {
151152 expect ( getInitialQueryContents ( '' , 'hucairz' ) ) . to . eq ( 'select ""' ) ;
152153 } ) ;
154+
153155 } ) ;
154156
155- it ( 'should find likely db language folders' , ( ) => {
156- expect ( isLikelyDbLanguageFolder ( 'db-javascript' ) ) . to . be . true ;
157- expect ( isLikelyDbLanguageFolder ( 'dbnot-a-db' ) ) . to . be . false ;
157+ describe ( 'likely tests' , ( ) => {
158+ let dir : tmp . DirResult ;
159+ beforeEach ( ( ) => {
160+ dir = tmp . dirSync ( ) ;
161+ } ) ;
162+
163+ afterEach ( ( ) => {
164+ dir . removeCallback ( ) ;
165+ } ) ;
166+
167+ it ( 'should likely be a database root: codeql-database.yml' , async ( ) => {
168+ const dbFolder = path . join ( dir . name , 'db' ) ;
169+ fs . mkdirSync ( dbFolder ) ;
170+ fs . mkdirSync ( path . join ( dbFolder , 'db-python' ) ) ;
171+ fs . writeFileSync ( path . join ( dbFolder , 'codeql-database.yml' ) , '' , 'utf8' ) ;
172+
173+ expect ( await isLikelyDatabaseRoot ( dbFolder ) ) . to . be . true ;
174+ } ) ;
175+
176+ it ( 'should likely be a database root: .dbinfo' , async ( ) => {
177+ const dbFolder = path . join ( dir . name , 'db' ) ;
178+ fs . mkdirSync ( dbFolder ) ;
179+ fs . mkdirSync ( path . join ( dbFolder , 'db-python' ) ) ;
180+ fs . writeFileSync ( path . join ( dbFolder , '.dbinfo' ) , '' , 'utf8' ) ;
181+
182+ expect ( await isLikelyDatabaseRoot ( dbFolder ) ) . to . be . true ;
183+ } ) ;
184+
185+ it ( 'should likely NOT be a database root: empty dir' , async ( ) => {
186+ const dbFolder = path . join ( dir . name , 'db' ) ;
187+ fs . mkdirSync ( dbFolder ) ;
188+ fs . mkdirSync ( path . join ( dbFolder , 'db-python' ) ) ;
189+
190+ expect ( await isLikelyDatabaseRoot ( dbFolder ) ) . to . be . false ;
191+ } ) ;
192+
193+ it ( 'should likely NOT be a database root: no db language folder' , async ( ) => {
194+ const dbFolder = path . join ( dir . name , 'db' ) ;
195+ fs . mkdirSync ( dbFolder ) ;
196+ fs . writeFileSync ( path . join ( dbFolder , '.dbinfo' ) , '' , 'utf8' ) ;
197+
198+ expect ( await isLikelyDatabaseRoot ( dbFolder ) ) . to . be . false ;
199+ } ) ;
200+
201+ it ( 'should find likely db language folder' , async ( ) => {
202+ const dbFolder = path . join ( dir . name , 'db-python' ) ;
203+ fs . mkdirSync ( dbFolder ) ;
204+ fs . mkdirSync ( path . join ( dbFolder , 'db-python' ) ) ;
205+ fs . writeFileSync ( path . join ( dbFolder , 'codeql-database.yml' ) , '' , 'utf8' ) ;
206+
207+ // not a db folder since there is a db-python folder inside this one
208+ expect ( await isLikelyDbLanguageFolder ( dbFolder ) ) . to . be . false ;
209+
210+ const nestedDbPythonFolder = path . join ( dbFolder , 'db-python' ) ;
211+ expect ( await isLikelyDbLanguageFolder ( nestedDbPythonFolder ) ) . to . be . true ;
212+ } ) ;
158213 } ) ;
159214
160215 class MockExtensionContext implements ExtensionContext {
0 commit comments