Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitfd0d09f

Browse files
committed
Overlay: Check database metadata for overlayBaseSpecifier
1 parent24569f2 commitfd0d09f

File tree

5 files changed

+78
-10
lines changed

5 files changed

+78
-10
lines changed

‎lib/analyze-action.js‎

Lines changed: 15 additions & 2 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎lib/init-action.js‎

Lines changed: 15 additions & 2 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎src/overlay-database-utils.test.ts‎

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import * as sinon from "sinon";
77

88
import*asactionsUtilfrom"./actions-util";
99
import*asapiClientfrom"./api-client";
10+
import{ResolveDatabaseOutput}from"./codeql";
1011
import*asgitUtilsfrom"./git-utils";
1112
import{getRunnerLogger}from"./logging";
1213
import{
@@ -95,6 +96,7 @@ interface DownloadOverlayBaseDatabaseTestCase {
9596
hasBaseDatabaseOidsFile:boolean;
9697
tryGetFolderBytesSucceeds:boolean;
9798
codeQLVersion:string;
99+
resolveDatabaseOutput:ResolveDatabaseOutput;
98100
}
99101

100102
constdefaultDownloadTestCase:DownloadOverlayBaseDatabaseTestCase={
@@ -105,6 +107,7 @@ const defaultDownloadTestCase: DownloadOverlayBaseDatabaseTestCase = {
105107
hasBaseDatabaseOidsFile:true,
106108
tryGetFolderBytesSucceeds:true,
107109
codeQLVersion:"2.20.5",
110+
resolveDatabaseOutput:{overlayBaseSpecifier:"20250626:XXX"},
108111
};
109112

110113
consttestDownloadOverlayBaseDatabaseFromCache=test.macro({
@@ -163,9 +166,16 @@ const testDownloadOverlayBaseDatabaseFromCache = test.macro({
163166
.resolves(testCase.tryGetFolderBytesSucceeds ?1024*1024 :undefined);
164167
stubs.push(tryGetFolderBytesStub);
165168

169+
constcodeql=mockCodeQLVersion(testCase.codeQLVersion);
170+
171+
constresolveDatabaseStub=sinon
172+
.stub(codeql,"resolveDatabase")
173+
.resolves(testCase.resolveDatabaseOutput);
174+
stubs.push(resolveDatabaseStub);
175+
166176
try{
167177
constresult=awaitdownloadOverlayBaseDatabaseFromCache(
168-
mockCodeQLVersion(testCase.codeQLVersion),
178+
codeql,
169179
config,
170180
logger,
171181
);
@@ -255,6 +265,15 @@ test(
255265
false,
256266
);
257267

268+
test(
269+
testDownloadOverlayBaseDatabaseFromCache,
270+
"returns undefined when downloaded database doesn't have an overlayBaseSpecifier",
271+
{
272+
resolveDatabaseOutput:{},
273+
},
274+
false,
275+
);
276+
258277
test(
259278
testDownloadOverlayBaseDatabaseFromCache,
260279
"returns undefined when filesystem error occurs",

‎src/overlay-database-utils.ts‎

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import { getCommitOid, getFileOidsUnderPath } from "./git-utils";
1717
import{Logger,withGroupAsync}from"./logging";
1818
import{
1919
CleanupLevel,
20+
getCodeQLDatabasePath,
2021
getErrorMessage,
2122
isInTestMode,
2223
tryGetFolderBytes,
@@ -176,11 +177,12 @@ const MAX_CACHE_OPERATION_MS = 600_000;
176177
*@param warningPrefix Prefix for the check failure warning message
177178
*@returns True if the verification succeeded, false otherwise
178179
*/
179-
functioncheckOverlayBaseDatabase(
180+
asyncfunctioncheckOverlayBaseDatabase(
181+
codeql:CodeQL,
180182
config:Config,
181183
logger:Logger,
182184
warningPrefix:string,
183-
):boolean{
185+
):Promise<boolean>{
184186
// An overlay-base database should contain the base database OIDs file.
185187
constbaseDatabaseOidsFilePath=getBaseDatabaseOidsFilePath(config);
186188
if(!fs.existsSync(baseDatabaseOidsFilePath)){
@@ -189,6 +191,24 @@ function checkOverlayBaseDatabase(
189191
);
190192
returnfalse;
191193
}
194+
195+
for(constlanguageofconfig.languages){
196+
constdbPath=getCodeQLDatabasePath(config,language);
197+
constresolveDatabaseOutput=awaitcodeql.resolveDatabase(dbPath);
198+
if(
199+
resolveDatabaseOutput===undefined||
200+
!("overlayBaseSpecifier"inresolveDatabaseOutput)
201+
){
202+
logger.info(`${warningPrefix}: no overlayBaseSpecifier defined`);
203+
returnfalse;
204+
}else{
205+
logger.info(
206+
`Overlay base specifier for${language} overlay-base found: `+
207+
`${resolveDatabaseOutput.overlayBaseSpecifier}`,
208+
);
209+
}
210+
}
211+
192212
returntrue;
193213
}
194214

@@ -232,7 +252,8 @@ export async function cleanupAndUploadOverlayBaseDatabaseToCache(
232252
returnfalse;
233253
}
234254

235-
constdatabaseIsValid=checkOverlayBaseDatabase(
255+
constdatabaseIsValid=awaitcheckOverlayBaseDatabase(
256+
codeql,
236257
config,
237258
logger,
238259
"Abort uploading overlay-base database to cache",
@@ -415,7 +436,8 @@ export async function downloadOverlayBaseDatabaseFromCache(
415436
returnundefined;
416437
}
417438

418-
constdatabaseIsValid=checkOverlayBaseDatabase(
439+
constdatabaseIsValid=awaitcheckOverlayBaseDatabase(
440+
codeql,
419441
config,
420442
logger,
421443
"Downloaded overlay-base database is invalid",

‎src/testing-utils.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
featureConfig,
2121
FeatureEnablement,
2222
}from"./feature-flags";
23+
import{KnownLanguage}from"./languages";
2324
import{Logger}from"./logging";
2425
import{OverlayDatabaseMode}from"./overlay-database-utils";
2526
import{
@@ -376,7 +377,7 @@ export function createTestConfig(overrides: Partial<Config>): Config {
376377
{
377378
version:getActionVersion(),
378379
analysisKinds:[AnalysisKind.CodeScanning],
379-
languages:[],
380+
languages:[KnownLanguage.java],
380381
buildMode:undefined,
381382
originalUserInput:{},
382383
computedConfig:{},

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp