Skip to content

Commit 86e7365

Browse files
committed
Add getPreliminaryOverlayDatabaseMode()
1 parent 5d69aef commit 86e7365

File tree

2 files changed

+102
-1
lines changed

2 files changed

+102
-1
lines changed

src/config-utils.test.ts

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1023,6 +1023,8 @@ const getOverlayDatabaseModeMacro = test.macro({
10231023
expected: {
10241024
overlayDatabaseMode: OverlayDatabaseMode;
10251025
useOverlayDatabaseCaching: boolean;
1026+
preliminaryOverlayDatabaseMode?: OverlayDatabaseMode;
1027+
preliminaryUseOverlayDatabaseCaching?: boolean;
10261028
},
10271029
) => {
10281030
return await withTmpDir(async (tempDir) => {
@@ -1091,7 +1093,44 @@ const getOverlayDatabaseModeMacro = test.macro({
10911093
logger,
10921094
);
10931095

1094-
t.deepEqual(result, expected);
1096+
const expectedResult = {
1097+
overlayDatabaseMode: expected.overlayDatabaseMode,
1098+
useOverlayDatabaseCaching: expected.useOverlayDatabaseCaching,
1099+
};
1100+
t.deepEqual(result, expectedResult);
1101+
1102+
let configFile: string | undefined;
1103+
if (Object.keys(setup.codeScanningConfig).length > 0) {
1104+
configFile = createConfigFile(
1105+
yaml.dump(setup.codeScanningConfig),
1106+
tempDir,
1107+
);
1108+
}
1109+
1110+
// Test getPreliminaryOverlayDatabaseMode as well
1111+
const preliminaryResult =
1112+
await configUtils.getPreliminaryOverlayDatabaseMode(
1113+
createTestInitConfigInputs({
1114+
languagesInput: setup.languages.join(","),
1115+
configFile,
1116+
features,
1117+
tempDir,
1118+
workspacePath: tempDir,
1119+
sourceRoot: tempDir,
1120+
repository,
1121+
logger,
1122+
}),
1123+
);
1124+
1125+
const expectedPreliminaryResult = {
1126+
overlayDatabaseMode:
1127+
expected.preliminaryOverlayDatabaseMode ??
1128+
expected.overlayDatabaseMode,
1129+
useOverlayDatabaseCaching:
1130+
expected.preliminaryUseOverlayDatabaseCaching ??
1131+
expected.useOverlayDatabaseCaching,
1132+
};
1133+
t.deepEqual(preliminaryResult, expectedPreliminaryResult);
10951134
} finally {
10961135
// Restore the original environment
10971136
process.env = originalEnv;
@@ -1597,6 +1636,8 @@ test(
15971636
{
15981637
overlayDatabaseMode: OverlayDatabaseMode.None,
15991638
useOverlayDatabaseCaching: false,
1639+
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
1640+
preliminaryUseOverlayDatabaseCaching: false,
16001641
},
16011642
);
16021643

@@ -1611,6 +1652,8 @@ test(
16111652
{
16121653
overlayDatabaseMode: OverlayDatabaseMode.None,
16131654
useOverlayDatabaseCaching: false,
1655+
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
1656+
preliminaryUseOverlayDatabaseCaching: false,
16141657
},
16151658
);
16161659

@@ -1624,6 +1667,8 @@ test(
16241667
{
16251668
overlayDatabaseMode: OverlayDatabaseMode.None,
16261669
useOverlayDatabaseCaching: false,
1670+
preliminaryOverlayDatabaseMode: OverlayDatabaseMode.Overlay,
1671+
preliminaryUseOverlayDatabaseCaching: false,
16271672
},
16281673
);
16291674

src/config-utils.ts

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,62 @@ export async function getOverlayDatabaseMode(
839839
};
840840
}
841841

842+
/**
843+
* Get preliminary overlay database mode using only the information available
844+
* in InitConfigInputs, without depending on CodeQL.
845+
*
846+
* This is a simplified version of getOverlayDatabaseMode that can be called
847+
* before the CodeQL CLI is available.
848+
*
849+
* @param inputs The initialization configuration inputs.
850+
* @returns An object containing the overlay database mode and whether the
851+
* action should perform overlay-base database caching.
852+
*/
853+
export async function getPreliminaryOverlayDatabaseMode(
854+
inputs: InitConfigInputs,
855+
): Promise<{
856+
overlayDatabaseMode: OverlayDatabaseMode;
857+
useOverlayDatabaseCaching: boolean;
858+
}> {
859+
const userConfig = await loadUserConfig(
860+
inputs.configFile,
861+
inputs.workspacePath,
862+
inputs.apiDetails,
863+
inputs.tempDir,
864+
inputs.logger,
865+
);
866+
867+
const languages = await getUnverifiedLanguagesForOverlay(
868+
inputs.languagesInput,
869+
inputs.repository,
870+
inputs.sourceRoot,
871+
inputs.logger,
872+
);
873+
const augmentationProperties = await calculateAugmentation(
874+
inputs.packsInput,
875+
inputs.queriesInput,
876+
inputs.repositoryProperties,
877+
languages,
878+
);
879+
const computedConfig = generateCodeScanningConfig(
880+
inputs.logger,
881+
userConfig,
882+
augmentationProperties,
883+
);
884+
885+
return getOverlayDatabaseMode(
886+
undefined, // codeql
887+
inputs.repository,
888+
inputs.features,
889+
undefined, // languages
890+
inputs.languagesInput,
891+
inputs.sourceRoot,
892+
undefined, // buildMode
893+
computedConfig,
894+
inputs.logger,
895+
);
896+
}
897+
842898
function dbLocationOrDefault(
843899
dbLocation: string | undefined,
844900
tempDir: string,

0 commit comments

Comments
 (0)