diff --git a/src/agents/model-catalog.test.ts b/src/agents/model-catalog.test.ts index 1dfe8bc8b0d..791947ad8fa 100644 --- a/src/agents/model-catalog.test.ts +++ b/src/agents/model-catalog.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; +import { resetLogger, setLoggerOverride } from "../logging/logger.js"; import { __setModelCatalogImportForTest, loadModelCatalog } from "./model-catalog.js"; import { installModelCatalogTestHooks, @@ -11,46 +12,57 @@ describe("loadModelCatalog", () => { installModelCatalogTestHooks(); it("retries after import failure without poisoning the cache", async () => { + setLoggerOverride({ level: "silent", consoleLevel: "warn" }); const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {}); - const getCallCount = mockCatalogImportFailThenRecover(); + try { + const getCallCount = mockCatalogImportFailThenRecover(); - const cfg = {} as OpenClawConfig; - const first = await loadModelCatalog({ config: cfg }); - expect(first).toEqual([]); + const cfg = {} as OpenClawConfig; + const first = await loadModelCatalog({ config: cfg }); + expect(first).toEqual([]); - const second = await loadModelCatalog({ config: cfg }); - expect(second).toEqual([{ id: "gpt-4.1", name: "GPT-4.1", provider: "openai" }]); - expect(getCallCount()).toBe(2); - expect(warnSpy).toHaveBeenCalledTimes(1); + const second = await loadModelCatalog({ config: cfg }); + expect(second).toEqual([{ id: "gpt-4.1", name: "GPT-4.1", provider: "openai" }]); + expect(getCallCount()).toBe(2); + expect(warnSpy).toHaveBeenCalledTimes(1); + } finally { + setLoggerOverride(null); + resetLogger(); + } }); it("returns partial results on discovery errors", async () => { + setLoggerOverride({ level: "silent", consoleLevel: "warn" }); const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {}); - - __setModelCatalogImportForTest( - async () => - ({ - AuthStorage: class {}, - ModelRegistry: class { - getAll() { - return [ - { id: "gpt-4.1", name: "GPT-4.1", provider: "openai" }, - { - get id() { - throw new Error("boom"); + try { + __setModelCatalogImportForTest( + async () => + ({ + AuthStorage: class {}, + ModelRegistry: class { + getAll() { + return [ + { id: "gpt-4.1", name: "GPT-4.1", provider: "openai" }, + { + get id() { + throw new Error("boom"); + }, + provider: "openai", + name: "bad", }, - provider: "openai", - name: "bad", - }, - ]; - } - }, - }) as unknown as PiSdkModule, - ); + ]; + } + }, + }) as unknown as PiSdkModule, + ); - const result = await loadModelCatalog({ config: {} as OpenClawConfig }); - expect(result).toEqual([{ id: "gpt-4.1", name: "GPT-4.1", provider: "openai" }]); - expect(warnSpy).toHaveBeenCalledTimes(1); + const result = await loadModelCatalog({ config: {} as OpenClawConfig }); + expect(result).toEqual([{ id: "gpt-4.1", name: "GPT-4.1", provider: "openai" }]); + expect(warnSpy).toHaveBeenCalledTimes(1); + } finally { + setLoggerOverride(null); + resetLogger(); + } }); it("adds openai-codex/gpt-5.3-codex-spark when base gpt-5.3-codex exists", async () => { diff --git a/src/agents/model-selection.e2e.test.ts b/src/agents/model-selection.e2e.test.ts index d04517d0166..20947a8a15e 100644 --- a/src/agents/model-selection.e2e.test.ts +++ b/src/agents/model-selection.e2e.test.ts @@ -1,5 +1,6 @@ import { describe, it, expect, vi } from "vitest"; import type { OpenClawConfig } from "../config/config.js"; +import { resetLogger, setLoggerOverride } from "../logging/logger.js"; import { parseModelRef, resolveModelRefFromString, @@ -146,26 +147,31 @@ describe("model-selection", () => { describe("resolveConfiguredModelRef", () => { it("should fall back to anthropic and warn if provider is missing for non-alias", () => { + setLoggerOverride({ level: "silent", consoleLevel: "warn" }); const warnSpy = vi.spyOn(console, "warn").mockImplementation(() => {}); - const cfg: Partial = { - agents: { - defaults: { - model: { primary: "claude-3-5-sonnet" }, + try { + const cfg: Partial = { + agents: { + defaults: { + model: { primary: "claude-3-5-sonnet" }, + }, }, - }, - }; + }; - const result = resolveConfiguredModelRef({ - cfg: cfg as OpenClawConfig, - defaultProvider: "google", - defaultModel: "gemini-pro", - }); + const result = resolveConfiguredModelRef({ + cfg: cfg as OpenClawConfig, + defaultProvider: "google", + defaultModel: "gemini-pro", + }); - expect(result).toEqual({ provider: "anthropic", model: "claude-3-5-sonnet" }); - expect(warnSpy).toHaveBeenCalledWith( - expect.stringContaining('Falling back to "anthropic/claude-3-5-sonnet"'), - ); - warnSpy.mockRestore(); + expect(result).toEqual({ provider: "anthropic", model: "claude-3-5-sonnet" }); + expect(warnSpy).toHaveBeenCalledWith( + expect.stringContaining('Falling back to "anthropic/claude-3-5-sonnet"'), + ); + } finally { + setLoggerOverride(null); + resetLogger(); + } }); it("should use default provider/model if config is empty", () => {