mirror of
https://github.com/github/codeql-action.git
synced 2026-05-23 14:28:45 +00:00
Add getPreliminaryOverlayDatabaseMode()
This commit is contained in:
@@ -1023,6 +1023,8 @@ const getOverlayDatabaseModeMacro = test.macro({
|
||||
expected: {
|
||||
overlayDatabaseMode: OverlayDatabaseMode;
|
||||
useOverlayDatabaseCaching: boolean;
|
||||
preliminaryOverlayDatabaseMode?: OverlayDatabaseMode;
|
||||
preliminaryUseOverlayDatabaseCaching?: boolean;
|
||||
},
|
||||
) => {
|
||||
return await withTmpDir(async (tempDir) => {
|
||||
@@ -1091,7 +1093,44 @@ const getOverlayDatabaseModeMacro = test.macro({
|
||||
logger,
|
||||
);
|
||||
|
||||
t.deepEqual(result, expected);
|
||||
const expectedResult = {
|
||||
overlayDatabaseMode: expected.overlayDatabaseMode,
|
||||
useOverlayDatabaseCaching: expected.useOverlayDatabaseCaching,
|
||||
};
|
||||
t.deepEqual(result, expectedResult);
|
||||
|
||||
let configFile: string | undefined;
|
||||
if (Object.keys(setup.codeScanningConfig).length > 0) {
|
||||
configFile = createConfigFile(
|
||||
yaml.dump(setup.codeScanningConfig),
|
||||
tempDir,
|
||||
);
|
||||
}
|
||||
|
||||
// Test getPreliminaryOverlayDatabaseMode as well
|
||||
const preliminaryResult =
|
||||
await configUtils.getPreliminaryOverlayDatabaseMode(
|
||||
createTestInitConfigInputs({
|
||||
languagesInput: setup.languages.join(","),
|
||||
configFile,
|
||||
features,
|
||||
tempDir,
|
||||
workspacePath: tempDir,
|
||||
sourceRoot: tempDir,
|
||||
repository,
|
||||
logger,
|
||||
}),
|
||||
);
|
||||
|
||||
const expectedPreliminaryResult = {
|
||||
overlayDatabaseMode:
|
||||
expected.preliminaryOverlayDatabaseMode ??
|
||||
expected.overlayDatabaseMode,
|
||||
useOverlayDatabaseCaching:
|
||||
expected.preliminaryUseOverlayDatabaseCaching ??
|
||||
expected.useOverlayDatabaseCaching,
|
||||
};
|
||||
t.deepEqual(preliminaryResult, expectedPreliminaryResult);
|
||||
} finally {
|
||||
// Restore the original environment
|
||||
process.env = originalEnv;
|
||||
@@ -1597,6 +1636,8 @@ test(
|
||||
{
|
||||
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||
useOverlayDatabaseCaching: false,
|
||||
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
|
||||
preliminaryUseOverlayDatabaseCaching: false,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1611,6 +1652,8 @@ test(
|
||||
{
|
||||
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||
useOverlayDatabaseCaching: false,
|
||||
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
|
||||
preliminaryUseOverlayDatabaseCaching: false,
|
||||
},
|
||||
);
|
||||
|
||||
@@ -1624,6 +1667,8 @@ test(
|
||||
{
|
||||
overlayDatabaseMode: OverlayDatabaseMode.None,
|
||||
useOverlayDatabaseCaching: false,
|
||||
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
|
||||
preliminaryUseOverlayDatabaseCaching: false,
|
||||
},
|
||||
);
|
||||
|
||||
|
||||
@@ -839,6 +839,62 @@ export async function getOverlayDatabaseMode(
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Get preliminary overlay database mode using only the information available
|
||||
* in InitConfigInputs, without depending on CodeQL.
|
||||
*
|
||||
* This is a simplified version of getOverlayDatabaseMode that can be called
|
||||
* before the CodeQL CLI is available.
|
||||
*
|
||||
* @param inputs The initialization configuration inputs.
|
||||
* @returns An object containing the overlay database mode and whether the
|
||||
* action should perform overlay-base database caching.
|
||||
*/
|
||||
export async function getPreliminaryOverlayDatabaseMode(
|
||||
inputs: InitConfigInputs,
|
||||
): Promise<{
|
||||
overlayDatabaseMode: OverlayDatabaseMode;
|
||||
useOverlayDatabaseCaching: boolean;
|
||||
}> {
|
||||
const userConfig = await loadUserConfig(
|
||||
inputs.configFile,
|
||||
inputs.workspacePath,
|
||||
inputs.apiDetails,
|
||||
inputs.tempDir,
|
||||
inputs.logger,
|
||||
);
|
||||
|
||||
const languages = await getUnverifiedLanguagesForOverlay(
|
||||
inputs.languagesInput,
|
||||
inputs.repository,
|
||||
inputs.sourceRoot,
|
||||
inputs.logger,
|
||||
);
|
||||
const augmentationProperties = await calculateAugmentation(
|
||||
inputs.packsInput,
|
||||
inputs.queriesInput,
|
||||
inputs.repositoryProperties,
|
||||
languages,
|
||||
);
|
||||
const computedConfig = generateCodeScanningConfig(
|
||||
inputs.logger,
|
||||
userConfig,
|
||||
augmentationProperties,
|
||||
);
|
||||
|
||||
return getOverlayDatabaseMode(
|
||||
undefined, // codeql
|
||||
inputs.repository,
|
||||
inputs.features,
|
||||
undefined, // languages
|
||||
inputs.languagesInput,
|
||||
inputs.sourceRoot,
|
||||
undefined, // buildMode
|
||||
computedConfig,
|
||||
inputs.logger,
|
||||
);
|
||||
}
|
||||
|
||||
function dbLocationOrDefault(
|
||||
dbLocation: string | undefined,
|
||||
tempDir: string,
|
||||
|
||||
Reference in New Issue
Block a user