test: harden provider mock isolation

This commit is contained in:
Peter Steinberger
2026-04-08 19:46:22 +01:00
parent c341161a77
commit 5478462cbf
5 changed files with 37 additions and 4 deletions

View File

@@ -5,6 +5,8 @@ vi.unmock("../secrets/provider-env-vars.js");
let collectProviderApiKeys: typeof import("./live-auth-keys.js").collectProviderApiKeys;
async function loadModulesForTest(): Promise<void> {
vi.resetModules();
vi.doUnmock("../secrets/provider-env-vars.js");
({ collectProviderApiKeys } = await import("./live-auth-keys.js"));
}

View File

@@ -1,6 +1,6 @@
import fs from "node:fs/promises";
import path from "node:path";
import { describe, expect, it, vi } from "vitest";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { withEnvAsync } from "../test-utils/env.js";
import {
installModelsConfigTestHooks,
@@ -8,7 +8,6 @@ import {
withCopilotGithubToken,
withModelsTempHome as withTempHome,
} from "./models-config.e2e-harness.js";
import { ensureOpenClawModelsJson } from "./models-config.js";
vi.unmock("./models-config.js");
vi.unmock("./agent-paths.js");
@@ -19,6 +18,21 @@ vi.unmock("../secrets/provider-env-vars.js");
installModelsConfigTestHooks({ restoreFetch: true });
let ensureOpenClawModelsJson: typeof import("./models-config.js").ensureOpenClawModelsJson;
async function loadModelsConfigForTest(): Promise<void> {
vi.resetModules();
vi.doUnmock("./models-config.js");
vi.doUnmock("./agent-paths.js");
vi.doUnmock("../plugins/manifest-registry.js");
vi.doUnmock("../plugins/provider-runtime.js");
vi.doUnmock("../plugins/provider-runtime.runtime.js");
vi.doUnmock("../secrets/provider-env-vars.js");
({ ensureOpenClawModelsJson } = await import("./models-config.js"));
}
beforeEach(loadModelsConfigForTest);
describe("models-config", () => {
it("auto-injects github-copilot provider when token is present", async () => {
await withTempHome(async (home) => {

View File

@@ -1,6 +1,6 @@
import fs from "node:fs/promises";
import path from "node:path";
import { describe, expect, it, vi } from "vitest";
import { beforeEach, describe, expect, it, vi } from "vitest";
import { withEnvAsync } from "../test-utils/env.js";
import { DEFAULT_COPILOT_API_BASE_URL } from "./github-copilot-token.js";
import {
@@ -9,7 +9,6 @@ import {
withUnsetCopilotTokenEnv,
withModelsTempHome as withTempHome,
} from "./models-config.e2e-harness.js";
import { ensureOpenClawModelsJson } from "./models-config.js";
vi.unmock("./models-config.js");
vi.unmock("./agent-paths.js");
@@ -20,6 +19,21 @@ vi.unmock("../secrets/provider-env-vars.js");
installModelsConfigTestHooks({ restoreFetch: true });
let ensureOpenClawModelsJson: typeof import("./models-config.js").ensureOpenClawModelsJson;
async function loadModelsConfigForTest(): Promise<void> {
vi.resetModules();
vi.doUnmock("./models-config.js");
vi.doUnmock("./agent-paths.js");
vi.doUnmock("../plugins/manifest-registry.js");
vi.doUnmock("../plugins/provider-runtime.js");
vi.doUnmock("../plugins/provider-runtime.runtime.js");
vi.doUnmock("../secrets/provider-env-vars.js");
({ ensureOpenClawModelsJson } = await import("./models-config.js"));
}
beforeEach(loadModelsConfigForTest);
async function readCopilotBaseUrl(agentDir: string) {
const raw = await fs.readFile(path.join(agentDir, "models.json"), "utf8");
const parsed = JSON.parse(raw) as {

View File

@@ -8,6 +8,7 @@ vi.unmock("../secrets/provider-env-vars.js");
async function loadSecretsModule() {
vi.doUnmock("../plugins/manifest-registry.js");
vi.doUnmock("../plugins/provider-runtime.js");
vi.doUnmock("../plugins/provider-runtime.runtime.js");
vi.doUnmock("../secrets/provider-env-vars.js");
vi.resetModules();
const [{ resetProviderRuntimeHookCacheForTest }, { resetPluginLoaderTestStateForTest }] =
@@ -23,6 +24,7 @@ async function loadSecretsModule() {
beforeEach(async () => {
vi.doUnmock("../plugins/manifest-registry.js");
vi.doUnmock("../plugins/provider-runtime.js");
vi.doUnmock("../plugins/provider-runtime.runtime.js");
vi.doUnmock("../secrets/provider-env-vars.js");
vi.resetModules();
const [{ resetProviderRuntimeHookCacheForTest }, { resetPluginLoaderTestStateForTest }] =

View File

@@ -25,6 +25,7 @@ let createProviderAuthResolver: typeof import("./models-config.providers.secrets
async function loadSecretsModule() {
vi.doUnmock("../plugins/manifest-registry.js");
vi.doUnmock("../plugins/provider-runtime.js");
vi.doUnmock("../plugins/provider-runtime.runtime.js");
vi.doUnmock("../secrets/provider-env-vars.js");
vi.resetModules();
await resetProviderRuntimeState();