diff --git a/src/init-action.ts b/src/init-action.ts index 533f8eaef..11e851491 100644 --- a/src/init-action.ts +++ b/src/init-action.ts @@ -785,7 +785,9 @@ async function run() { ); config.augmentationProperties.overlayDatabaseMode = OverlayDatabaseMode.None; - cleanupDatabaseClusterDirectory(config, logger); + cleanupDatabaseClusterDirectory(config, logger, { + disableExistingDirectoryWarning: true, + }); await runDatabaseInitCluster( databaseInitEnvironment, codeql, diff --git a/src/init.test.ts b/src/init.test.ts index 03f456d11..740435f6a 100644 --- a/src/init.test.ts +++ b/src/init.test.ts @@ -92,6 +92,7 @@ for (const { runnerEnv, ErrorConstructor, message } of [ cleanupDatabaseClusterDirectory( createTestConfig({ dbLocation }), getRecordingLogger(messages), + {}, () => { throw new Error(rmSyncError); }, @@ -112,6 +113,33 @@ for (const { runnerEnv, ErrorConstructor, message } of [ }); } +test("cleanupDatabaseClusterDirectory can disable warning with options", async (t) => { + await withTmpDir(async (tmpDir: string) => { + const dbLocation = path.resolve(tmpDir, "dbs"); + fs.mkdirSync(dbLocation, { recursive: true }); + + const fileToCleanUp = path.resolve(dbLocation, "something-to-cleanup.txt"); + fs.writeFileSync(fileToCleanUp, ""); + + const messages: LoggedMessage[] = []; + cleanupDatabaseClusterDirectory( + createTestConfig({ dbLocation }), + getRecordingLogger(messages), + { disableExistingDirectoryWarning: true }, + ); + + // Should only have the info message, not the warning + t.is(messages.length, 1); + t.is(messages[0].type, "info"); + t.is( + messages[0].message, + `Cleaned up database cluster directory ${dbLocation}.`, + ); + + t.false(fs.existsSync(fileToCleanUp)); + }); +}); + type PackInfo = { language: KnownLanguage; packinfoContents: string | undefined; diff --git a/src/init.ts b/src/init.ts index 3e6f6b650..a62929b92 100644 --- a/src/init.ts +++ b/src/init.ts @@ -238,6 +238,7 @@ export async function checkInstallPython311( export function cleanupDatabaseClusterDirectory( config: configUtils.Config, logger: Logger, + options: { disableExistingDirectoryWarning?: boolean } = {}, // We can't stub the fs module in tests, so we allow the caller to override the rmSync function // for testing. rmSync = fs.rmSync, @@ -247,9 +248,11 @@ export function cleanupDatabaseClusterDirectory( (fs.statSync(config.dbLocation).isFile() || fs.readdirSync(config.dbLocation).length > 0) ) { - logger.warning( - `The database cluster directory ${config.dbLocation} must be empty. Attempting to clean it up.`, - ); + if (!options.disableExistingDirectoryWarning) { + logger.warning( + `The database cluster directory ${config.dbLocation} must be empty. Attempting to clean it up.`, + ); + } try { rmSync(config.dbLocation, { force: true,