@@ -7,7 +7,9 @@ import * as sinon from "sinon";
77
88import * as actionsUtil from "./actions-util" ;
99import * as apiClient from "./api-client" ;
10+ import { ResolveDatabaseOutput } from "./codeql" ;
1011import * as gitUtils from "./git-utils" ;
12+ import { KnownLanguage } from "./languages" ;
1113import { getRunnerLogger } from "./logging" ;
1214import {
1315 downloadOverlayBaseDatabaseFromCache ,
@@ -95,6 +97,7 @@ interface DownloadOverlayBaseDatabaseTestCase {
9597 hasBaseDatabaseOidsFile : boolean ;
9698 tryGetFolderBytesSucceeds : boolean ;
9799 codeQLVersion : string ;
100+ resolveDatabaseOutput : ResolveDatabaseOutput | Error ;
98101}
99102
100103const defaultDownloadTestCase : DownloadOverlayBaseDatabaseTestCase = {
@@ -105,6 +108,7 @@ const defaultDownloadTestCase: DownloadOverlayBaseDatabaseTestCase = {
105108 hasBaseDatabaseOidsFile : true ,
106109 tryGetFolderBytesSucceeds : true ,
107110 codeQLVersion : "2.20.5" ,
111+ resolveDatabaseOutput : { overlayBaseSpecifier : "20250626:XXX" } ,
108112} ;
109113
110114const testDownloadOverlayBaseDatabaseFromCache = test . macro ( {
@@ -119,9 +123,11 @@ const testDownloadOverlayBaseDatabaseFromCache = test.macro({
119123 await fs . promises . mkdir ( dbLocation , { recursive : true } ) ;
120124
121125 const logger = getRunnerLogger ( true ) ;
122- const config = createTestConfig ( { dbLocation } ) ;
123-
124126 const testCase = { ...defaultDownloadTestCase , ...partialTestCase } ;
127+ const config = createTestConfig ( {
128+ dbLocation,
129+ languages : [ KnownLanguage . java ] ,
130+ } ) ;
125131
126132 config . overlayDatabaseMode = testCase . overlayDatabaseMode ;
127133 config . useOverlayDatabaseCaching = testCase . useOverlayDatabaseCaching ;
@@ -163,9 +169,23 @@ const testDownloadOverlayBaseDatabaseFromCache = test.macro({
163169 . resolves ( testCase . tryGetFolderBytesSucceeds ? 1024 * 1024 : undefined ) ;
164170 stubs . push ( tryGetFolderBytesStub ) ;
165171
172+ const codeql = mockCodeQLVersion ( testCase . codeQLVersion ) ;
173+
174+ if ( testCase . resolveDatabaseOutput instanceof Error ) {
175+ const resolveDatabaseStub = sinon
176+ . stub ( codeql , "resolveDatabase" )
177+ . rejects ( testCase . resolveDatabaseOutput ) ;
178+ stubs . push ( resolveDatabaseStub ) ;
179+ } else {
180+ const resolveDatabaseStub = sinon
181+ . stub ( codeql , "resolveDatabase" )
182+ . resolves ( testCase . resolveDatabaseOutput ) ;
183+ stubs . push ( resolveDatabaseStub ) ;
184+ }
185+
166186 try {
167187 const result = await downloadOverlayBaseDatabaseFromCache (
168- mockCodeQLVersion ( testCase . codeQLVersion ) ,
188+ codeql ,
169189 config ,
170190 logger ,
171191 ) ;
@@ -255,6 +275,24 @@ test(
255275 false ,
256276) ;
257277
278+ test (
279+ testDownloadOverlayBaseDatabaseFromCache ,
280+ "returns undefined when downloaded database doesn't have an overlayBaseSpecifier" ,
281+ {
282+ resolveDatabaseOutput : { } ,
283+ } ,
284+ false ,
285+ ) ;
286+
287+ test (
288+ testDownloadOverlayBaseDatabaseFromCache ,
289+ "returns undefined when resolving database metadata fails" ,
290+ {
291+ resolveDatabaseOutput : new Error ( "Failed to resolve database metadata" ) ,
292+ } ,
293+ false ,
294+ ) ;
295+
258296test (
259297 testDownloadOverlayBaseDatabaseFromCache ,
260298 "returns undefined when filesystem error occurs" ,
0 commit comments