mirror of
https://github.com/farcasclaudiu/openclaw.git
synced 2026-06-28 19:01:47 +03:00
refactor(test): share pi embedded model fixtures
This commit is contained in:
@@ -5,23 +5,16 @@ vi.mock("../pi-model-discovery.js", () => ({
|
|||||||
discoverModels: vi.fn(() => ({ find: vi.fn(() => null) })),
|
discoverModels: vi.fn(() => ({ find: vi.fn(() => null) })),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
import { discoverModels } from "../pi-model-discovery.js";
|
|
||||||
import { buildInlineProviderModels, resolveModel } from "./model.js";
|
import { buildInlineProviderModels, resolveModel } from "./model.js";
|
||||||
|
import {
|
||||||
const makeModel = (id: string) => ({
|
makeModel,
|
||||||
id,
|
mockDiscoveredModel,
|
||||||
name: id,
|
OPENAI_CODEX_TEMPLATE_MODEL,
|
||||||
reasoning: false,
|
resetMockDiscoverModels,
|
||||||
input: ["text"] as const,
|
} from "./model.test-harness.js";
|
||||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
||||||
contextWindow: 1,
|
|
||||||
maxTokens: 1,
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
vi.mocked(discoverModels).mockReturnValue({
|
resetMockDiscoverModels();
|
||||||
find: vi.fn(() => null),
|
|
||||||
} as unknown as ReturnType<typeof discoverModels>);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("pi embedded model e2e smoke", () => {
|
describe("pi embedded model e2e smoke", () => {
|
||||||
@@ -45,26 +38,11 @@ describe("pi embedded model e2e smoke", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("builds an openai-codex forward-compat fallback for gpt-5.3-codex", () => {
|
it("builds an openai-codex forward-compat fallback for gpt-5.3-codex", () => {
|
||||||
const templateModel = {
|
mockDiscoveredModel({
|
||||||
id: "gpt-5.2-codex",
|
|
||||||
name: "GPT-5.2 Codex",
|
|
||||||
provider: "openai-codex",
|
provider: "openai-codex",
|
||||||
api: "openai-codex-responses",
|
modelId: "gpt-5.2-codex",
|
||||||
baseUrl: "https://chatgpt.com/backend-api",
|
templateModel: OPENAI_CODEX_TEMPLATE_MODEL,
|
||||||
reasoning: true,
|
});
|
||||||
input: ["text", "image"] as const,
|
|
||||||
cost: { input: 1.75, output: 14, cacheRead: 0.175, cacheWrite: 0 },
|
|
||||||
contextWindow: 272000,
|
|
||||||
maxTokens: 128000,
|
|
||||||
};
|
|
||||||
vi.mocked(discoverModels).mockReturnValue({
|
|
||||||
find: vi.fn((provider: string, modelId: string) => {
|
|
||||||
if (provider === "openai-codex" && modelId === "gpt-5.2-codex") {
|
|
||||||
return templateModel;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}),
|
|
||||||
} as unknown as ReturnType<typeof discoverModels>);
|
|
||||||
|
|
||||||
const result = resolveModel("openai-codex", "gpt-5.3-codex", "/tmp/agent");
|
const result = resolveModel("openai-codex", "gpt-5.3-codex", "/tmp/agent");
|
||||||
expect(result.error).toBeUndefined();
|
expect(result.error).toBeUndefined();
|
||||||
|
|||||||
@@ -0,0 +1,46 @@
|
|||||||
|
import { vi } from "vitest";
|
||||||
|
import { discoverModels } from "../pi-model-discovery.js";
|
||||||
|
|
||||||
|
export const makeModel = (id: string) => ({
|
||||||
|
id,
|
||||||
|
name: id,
|
||||||
|
reasoning: false,
|
||||||
|
input: ["text"] as const,
|
||||||
|
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
||||||
|
contextWindow: 1,
|
||||||
|
maxTokens: 1,
|
||||||
|
});
|
||||||
|
|
||||||
|
export const OPENAI_CODEX_TEMPLATE_MODEL = {
|
||||||
|
id: "gpt-5.2-codex",
|
||||||
|
name: "GPT-5.2 Codex",
|
||||||
|
provider: "openai-codex",
|
||||||
|
api: "openai-codex-responses",
|
||||||
|
baseUrl: "https://chatgpt.com/backend-api",
|
||||||
|
reasoning: true,
|
||||||
|
input: ["text", "image"] as const,
|
||||||
|
cost: { input: 1.75, output: 14, cacheRead: 0.175, cacheWrite: 0 },
|
||||||
|
contextWindow: 272000,
|
||||||
|
maxTokens: 128000,
|
||||||
|
};
|
||||||
|
|
||||||
|
export function resetMockDiscoverModels(): void {
|
||||||
|
vi.mocked(discoverModels).mockReturnValue({
|
||||||
|
find: vi.fn(() => null),
|
||||||
|
} as unknown as ReturnType<typeof discoverModels>);
|
||||||
|
}
|
||||||
|
|
||||||
|
export function mockDiscoveredModel(params: {
|
||||||
|
provider: string;
|
||||||
|
modelId: string;
|
||||||
|
templateModel: unknown;
|
||||||
|
}): void {
|
||||||
|
vi.mocked(discoverModels).mockReturnValue({
|
||||||
|
find: vi.fn((provider: string, modelId: string) => {
|
||||||
|
if (provider === params.provider && modelId === params.modelId) {
|
||||||
|
return params.templateModel;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}),
|
||||||
|
} as unknown as ReturnType<typeof discoverModels>);
|
||||||
|
}
|
||||||
@@ -6,23 +6,16 @@ vi.mock("../pi-model-discovery.js", () => ({
|
|||||||
}));
|
}));
|
||||||
|
|
||||||
import type { OpenClawConfig } from "../../config/config.js";
|
import type { OpenClawConfig } from "../../config/config.js";
|
||||||
import { discoverModels } from "../pi-model-discovery.js";
|
|
||||||
import { buildInlineProviderModels, resolveModel } from "./model.js";
|
import { buildInlineProviderModels, resolveModel } from "./model.js";
|
||||||
|
import {
|
||||||
const makeModel = (id: string) => ({
|
makeModel,
|
||||||
id,
|
mockDiscoveredModel,
|
||||||
name: id,
|
OPENAI_CODEX_TEMPLATE_MODEL,
|
||||||
reasoning: false,
|
resetMockDiscoverModels,
|
||||||
input: ["text"] as const,
|
} from "./model.test-harness.js";
|
||||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
|
|
||||||
contextWindow: 1,
|
|
||||||
maxTokens: 1,
|
|
||||||
});
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
vi.mocked(discoverModels).mockReturnValue({
|
resetMockDiscoverModels();
|
||||||
find: vi.fn(() => null),
|
|
||||||
} as unknown as ReturnType<typeof discoverModels>);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("buildInlineProviderModels", () => {
|
describe("buildInlineProviderModels", () => {
|
||||||
@@ -136,27 +129,11 @@ describe("resolveModel", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("builds an openai-codex fallback for gpt-5.3-codex", () => {
|
it("builds an openai-codex fallback for gpt-5.3-codex", () => {
|
||||||
const templateModel = {
|
mockDiscoveredModel({
|
||||||
id: "gpt-5.2-codex",
|
|
||||||
name: "GPT-5.2 Codex",
|
|
||||||
provider: "openai-codex",
|
provider: "openai-codex",
|
||||||
api: "openai-codex-responses",
|
modelId: "gpt-5.2-codex",
|
||||||
baseUrl: "https://chatgpt.com/backend-api",
|
templateModel: OPENAI_CODEX_TEMPLATE_MODEL,
|
||||||
reasoning: true,
|
});
|
||||||
input: ["text", "image"] as const,
|
|
||||||
cost: { input: 1.75, output: 14, cacheRead: 0.175, cacheWrite: 0 },
|
|
||||||
contextWindow: 272000,
|
|
||||||
maxTokens: 128000,
|
|
||||||
};
|
|
||||||
|
|
||||||
vi.mocked(discoverModels).mockReturnValue({
|
|
||||||
find: vi.fn((provider: string, modelId: string) => {
|
|
||||||
if (provider === "openai-codex" && modelId === "gpt-5.2-codex") {
|
|
||||||
return templateModel;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}),
|
|
||||||
} as unknown as ReturnType<typeof discoverModels>);
|
|
||||||
|
|
||||||
const result = resolveModel("openai-codex", "gpt-5.3-codex", "/tmp/agent");
|
const result = resolveModel("openai-codex", "gpt-5.3-codex", "/tmp/agent");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user