


























@@ -17,6 +17,7 @@ const listProfilesForProvider = vi.fn().mockReturnValue([]);
1717const resolveEnvApiKey = vi.fn().mockReturnValue(undefined);
1818const resolveAwsSdkEnvVarName = vi.fn().mockReturnValue(undefined);
1919const hasUsableCustomProviderApiKey = vi.fn().mockReturnValue(false);
20+const loadModelCatalog = vi.fn(async () => []);
2021const loadProviderCatalogModelsForList = vi.fn<() => Promise<Array<Record<string, unknown>>>>(
2122async () => [],
2223);
@@ -74,7 +75,7 @@ vi.mock("./models/list.runtime.js", () => {
7475 resolveEnvApiKey,
7576 resolveAwsSdkEnvVarName,
7677 hasUsableCustomProviderApiKey,
77-loadModelCatalog: vi.fn(async () => []),
78+ loadModelCatalog,
7879 loadProviderCatalogModelsForList,
7980discoverAuthStorage: () => ({}) as unknown,
8081discoverModels: () => new MockModelRegistry() as unknown,
@@ -136,6 +137,8 @@ beforeEach(() => {
136137getRuntimeConfig.mockReturnValue({});
137138listProfilesForProvider.mockReturnValue([]);
138139ensureOpenClawModelsJson.mockClear();
140+loadModelCatalog.mockClear();
141+loadModelCatalog.mockResolvedValue([]);
139142loadProviderCatalogModelsForList.mockReset();
140143loadProviderCatalogModelsForList.mockResolvedValue([]);
141144shouldSuppressBuiltInModel.mockReset();
@@ -359,6 +362,7 @@ describe("models list/status", () => {
359362await modelsListCommand({ all: true, provider: "moonshot", json: true }, runtime);
360363361364const payload = parseJsonLog(runtime);
365+expect(loadModelCatalog).toHaveBeenCalledTimes(1);
362366expect(payload.models).toEqual([
363367expect.objectContaining({
364368key: "moonshot/kimi-k2.6",
@@ -369,6 +373,21 @@ describe("models list/status", () => {
369373]);
370374});
371375376+it("models list rejects provider display labels", async () => {
377+setDefaultZaiRegistry({ available: false });
378+const runtime = makeRuntime();
379+380+await modelsListCommand({ all: true, provider: "Moonshot AI", json: true }, runtime);
381+382+expect(runtime.error).toHaveBeenCalledWith(
383+'Invalid provider filter "Moonshot AI". Use a provider id such as "moonshot", not a display label.',
384+);
385+expect(runtime.log).not.toHaveBeenCalled();
386+expect(loadModelCatalog).not.toHaveBeenCalled();
387+expect(loadProviderCatalogModelsForList).not.toHaveBeenCalled();
388+expect(process.exitCode).toBe(1);
389+});
390+372391it("models list all local skips unauthenticated provider catalog rows", async () => {
373392setDefaultZaiRegistry({ available: false });
374393loadProviderCatalogModelsForList.mockResolvedValueOnce([MOONSHOT_MODEL]);
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。