fix tests

This commit is contained in:
DaKheera47 2026-01-30 09:37:58 +00:00
parent 8e56378794
commit 0e27dbe52b
2 changed files with 41 additions and 13 deletions

View File

@ -129,8 +129,13 @@ export async function stopServer(args: {
closeDb: () => void;
tempDir: string;
}) {
await new Promise<void>((resolve) => args.server.close(() => resolve()));
args.closeDb();
// Defensive: if startServer throws, callers may still run cleanup.
if (args.server) {
await new Promise<void>((resolve) => args.server.close(() => resolve()));
}
if (args.closeDb) {
args.closeDb();
}
await rm(args.tempDir, { recursive: true, force: true });
process.env = { ...originalEnv };
vi.clearAllMocks();

View File

@ -90,17 +90,42 @@ export function serializeEnvBoolean(value: boolean | null): string | null {
}
export async function applyStoredEnvOverrides(): Promise<void> {
const overrides = await settingsRepo.getAllSettings();
const safeGetSetting = async (key: SettingKey): Promise<string | null> => {
try {
return await settingsRepo.getSetting(key);
} catch (error) {
// In some test harnesses or first-boot scenarios, the DB may exist but not yet
// have the settings table. Treat this as "no overrides".
const msg = String((error as any)?.message ?? error);
if (msg.includes("no such table") && msg.includes("settings"))
return null;
throw error;
}
};
const safeSetSetting = async (key: SettingKey, value: string | null) => {
try {
await settingsRepo.setSetting(key, value);
} catch (error) {
const msg = String((error as any)?.message ?? error);
if (msg.includes("no such table") && msg.includes("settings")) return;
throw error;
}
};
// Migration: move legacy OpenRouter key to the unified LLM key.
//
// Users only see their API keys once. If we simply switch to LLM_API_KEY without
// copying, they may be unable to recover their existing key.
const effectiveProvider = (overrides.llmProvider ?? process.env.LLM_PROVIDER)
const providerOverride = await safeGetSetting("llmProvider");
const legacyOpenrouterKey = normalizeEnvInput(
await safeGetSetting("openrouterApiKey"),
);
const unifiedKey = normalizeEnvInput(await safeGetSetting("llmApiKey"));
const effectiveProvider = (providerOverride ?? process.env.LLM_PROVIDER)
?.trim()
.toLowerCase();
const legacyOpenrouterKey = normalizeEnvInput(overrides.openrouterApiKey);
const unifiedKey = normalizeEnvInput(overrides.llmApiKey);
if (
(effectiveProvider ?? "openrouter") === "openrouter" &&
@ -110,10 +135,8 @@ export async function applyStoredEnvOverrides(): Promise<void> {
console.warn(
"[DEPRECATED] Detected stored OpenRouter API key. Migrating to LLM_API_KEY and clearing legacy storage.",
);
await settingsRepo.setSetting("llmApiKey", legacyOpenrouterKey);
await settingsRepo.setSetting("openrouterApiKey", null);
overrides.llmApiKey = legacyOpenrouterKey;
delete overrides.openrouterApiKey;
await safeSetSetting("llmApiKey", legacyOpenrouterKey);
await safeSetSetting("openrouterApiKey", null);
}
// Migration helper for env-based users: copy OPENROUTER_API_KEY -> LLM_API_KEY
@ -133,20 +156,20 @@ export async function applyStoredEnvOverrides(): Promise<void> {
await Promise.all([
...readableStringConfig.map(async ({ settingKey, envKey }) => {
const override = overrides[settingKey] ?? null;
const override = await safeGetSetting(settingKey);
if (override === null) return;
applyEnvValue(envKey, normalizeEnvInput(override));
}),
...readableBooleanConfig.map(
async ({ settingKey, envKey, defaultValue }) => {
const override = overrides[settingKey] ?? null;
const override = await safeGetSetting(settingKey);
if (override === null) return;
const parsed = parseEnvBoolean(override, defaultValue);
applyEnvValue(envKey, serializeEnvBoolean(parsed));
},
),
...privateStringConfig.map(async ({ settingKey, envKey }) => {
const override = overrides[settingKey] ?? null;
const override = await safeGetSetting(settingKey);
if (override === null) return;
applyEnvValue(envKey, normalizeEnvInput(override));
}),