Skip to content

Commit c96efdb

Browse files
committed
Overlay: Add error handling for overlayBaseSpecifier check
1 parent aff036b commit c96efdb

File tree

4 files changed

+61
-30
lines changed

4 files changed

+61
-30
lines changed

lib/analyze-action.js

Lines changed: 12 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/init-action.js

Lines changed: 12 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/overlay-database-utils.test.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ interface DownloadOverlayBaseDatabaseTestCase {
9696
hasBaseDatabaseOidsFile: boolean;
9797
tryGetFolderBytesSucceeds: boolean;
9898
codeQLVersion: string;
99-
resolveDatabaseOutput: ResolveDatabaseOutput;
99+
resolveDatabaseOutput: ResolveDatabaseOutput | Error;
100100
}
101101

102102
const defaultDownloadTestCase: DownloadOverlayBaseDatabaseTestCase = {
@@ -168,10 +168,17 @@ const testDownloadOverlayBaseDatabaseFromCache = test.macro({
168168

169169
const codeql = mockCodeQLVersion(testCase.codeQLVersion);
170170

171-
const resolveDatabaseStub = sinon
172-
.stub(codeql, "resolveDatabase")
173-
.resolves(testCase.resolveDatabaseOutput);
174-
stubs.push(resolveDatabaseStub);
171+
if (testCase.resolveDatabaseOutput instanceof Error) {
172+
const resolveDatabaseStub = sinon
173+
.stub(codeql, "resolveDatabase")
174+
.rejects(testCase.resolveDatabaseOutput);
175+
stubs.push(resolveDatabaseStub);
176+
} else {
177+
const resolveDatabaseStub = sinon
178+
.stub(codeql, "resolveDatabase")
179+
.resolves(testCase.resolveDatabaseOutput);
180+
stubs.push(resolveDatabaseStub);
181+
}
175182

176183
try {
177184
const result = await downloadOverlayBaseDatabaseFromCache(
@@ -274,6 +281,15 @@ test(
274281
false,
275282
);
276283

284+
test(
285+
testDownloadOverlayBaseDatabaseFromCache,
286+
"returns undefined when resolving database metadata fails",
287+
{
288+
resolveDatabaseOutput: new Error("Failed to resolve database metadata"),
289+
},
290+
false,
291+
);
292+
277293
test(
278294
testDownloadOverlayBaseDatabaseFromCache,
279295
"returns undefined when filesystem error occurs",

src/overlay-database-utils.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -194,18 +194,23 @@ async function checkOverlayBaseDatabase(
194194

195195
for (const language of config.languages) {
196196
const dbPath = getCodeQLDatabasePath(config, language);
197-
const resolveDatabaseOutput = await codeql.resolveDatabase(dbPath);
198-
if (
199-
resolveDatabaseOutput === undefined ||
200-
!("overlayBaseSpecifier" in resolveDatabaseOutput)
201-
) {
202-
logger.info(`${warningPrefix}: no overlayBaseSpecifier defined`);
197+
try {
198+
const resolveDatabaseOutput = await codeql.resolveDatabase(dbPath);
199+
if (
200+
resolveDatabaseOutput === undefined ||
201+
!("overlayBaseSpecifier" in resolveDatabaseOutput)
202+
) {
203+
logger.info(`${warningPrefix}: no overlayBaseSpecifier defined`);
204+
return false;
205+
} else {
206+
logger.info(
207+
`Overlay base specifier for ${language} overlay-base database found: ` +
208+
`${resolveDatabaseOutput.overlayBaseSpecifier}`,
209+
);
210+
}
211+
} catch (e) {
212+
logger.warning(`${warningPrefix}: failed to resolve database: ${e}`);
203213
return false;
204-
} else {
205-
logger.info(
206-
`Overlay base specifier for ${language} overlay-base database found: ` +
207-
`${resolveDatabaseOutput.overlayBaseSpecifier}`,
208-
);
209214
}
210215
}
211216

0 commit comments

Comments
 (0)