perf: mock hot agents import tests

This commit is contained in:
Peter Steinberger
2026-04-13 01:35:52 +01:00
parent 5b2ae49107
commit 03d042d2b9
5 changed files with 118 additions and 0 deletions

View File

@@ -4,6 +4,15 @@ import { isOpenRouterAnthropicModelRef } from "./anthropic-family-cache-semantic
import { __testing as extraParamsTesting, applyExtraParamsToAgent } from "./extra-params.js";
import { resolveCacheRetention } from "./prompt-cache-retention.js";
vi.mock("../../plugins/provider-runtime.js", () => ({
prepareProviderExtraParams: ({
context,
}: {
context: { extraParams: Record<string, unknown> };
}) => context.extraParams,
wrapProviderStreamFn: () => undefined,
}));
function applyAndExpectWrapped(params: {
cfg?: Parameters<typeof applyExtraParamsToAgent>[1];
extraParamsOverride?: Parameters<typeof applyExtraParamsToAgent>[4];

View File

@@ -4,6 +4,15 @@ import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-s
import { __testing as extraParamsTesting } from "./extra-params.js";
import { runExtraParamsCase } from "./extra-params.test-support.js";
vi.mock("../../plugins/provider-runtime.js", () => ({
prepareProviderExtraParams: ({
context,
}: {
context: { extraParams: Record<string, unknown> };
}) => context.extraParams,
wrapProviderStreamFn: () => undefined,
}));
vi.mock("@mariozechner/pi-ai", async () =>
createPiAiStreamSimpleMock(() =>
vi.importActual<typeof import("@mariozechner/pi-ai")>("@mariozechner/pi-ai"),

View File

@@ -3,6 +3,15 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { __testing as extraParamsTesting } from "./extra-params.js";
import { runExtraParamsCase } from "./extra-params.test-support.js";
vi.mock("../../plugins/provider-runtime.js", () => ({
prepareProviderExtraParams: ({
context,
}: {
context: { extraParams: Record<string, unknown> };
}) => context.extraParams,
wrapProviderStreamFn: () => undefined,
}));
vi.mock("@mariozechner/pi-ai", async () => {
const original =
await vi.importActual<typeof import("@mariozechner/pi-ai")>("@mariozechner/pi-ai");

View File

@@ -1,9 +1,19 @@
import type { StreamFn } from "@mariozechner/pi-agent-core";
import type { Context, Model, SimpleStreamOptions } from "@mariozechner/pi-ai";
import { vi } from "vitest";
import type { ThinkLevel } from "../../auto-reply/thinking.shared.js";
import type { OpenClawConfig } from "../../config/types.openclaw.js";
import { __testing as extraParamsTesting, applyExtraParamsToAgent } from "./extra-params.js";
vi.mock("../../plugins/provider-runtime.js", () => ({
prepareProviderExtraParams: ({
context,
}: {
context: { extraParams: Record<string, unknown> };
}) => context.extraParams,
wrapProviderStreamFn: () => undefined,
}));
export type ExtraParamsCapture<TPayload extends Record<string, unknown>> = {
headers?: Record<string, string>;
options?: SimpleStreamOptions;

View File

@@ -16,6 +16,87 @@ const taskExecutorMocks = vi.hoisted(() => ({
recordTaskRunProgressByRunId: vi.fn(),
}));
const configMocks = vi.hoisted(() => ({
loadConfig: vi.fn(() => ({})),
}));
const mediaStoreMocks = vi.hoisted(() => ({
saveMediaBuffer: vi.fn(),
}));
const musicGenerationRuntimeMocks = vi.hoisted(() => ({
generateMusic: vi.fn(),
listRuntimeMusicGenerationProviders: vi.fn(),
}));
const musicGenerateBackgroundMocks = vi.hoisted(() => ({
completeMusicGenerationTaskRun: vi.fn((params) => {
if (!params.handle) {
return;
}
taskExecutorMocks.completeTaskRunByRunId({
runId: params.handle.runId,
runtime: "cli",
sessionKey: params.handle.requesterSessionKey,
});
}),
createMusicGenerationTaskRun: vi.fn((params) => {
const sessionKey = params.sessionKey?.trim();
if (!sessionKey) {
return null;
}
const runId = "tool:music_generate:test-run";
const task = taskExecutorMocks.createRunningTaskRun({
runId,
runtime: "cli",
requesterSessionKey: sessionKey,
ownerKey: sessionKey,
scopeKind: "session",
task: params.prompt,
deliveryStatus: "not_applicable",
notifyPolicy: "silent",
createdAt: Date.now(),
});
return {
taskId: task.taskId,
runId,
requesterSessionKey: sessionKey,
requesterOrigin: params.requesterOrigin,
taskLabel: params.prompt,
};
}),
failMusicGenerationTaskRun: vi.fn((params) => {
if (!params.handle) {
return;
}
taskExecutorMocks.failTaskRunByRunId({
runId: params.handle.runId,
runtime: "cli",
sessionKey: params.handle.requesterSessionKey,
});
}),
recordMusicGenerationTaskProgress: vi.fn((params) => {
if (!params.handle) {
return;
}
taskExecutorMocks.recordTaskRunProgressByRunId({
runId: params.handle.runId,
runtime: "cli",
sessionKey: params.handle.requesterSessionKey,
progressSummary: params.progressSummary,
eventSummary: params.eventSummary,
});
}),
wakeMusicGenerationTaskCompletion: vi.fn(),
}));
vi.mock("../../config/config.js", () => configMocks);
vi.mock("../../media/store.js", () => mediaStoreMocks);
vi.mock("../../media/web-media.js", () => ({
loadWebMedia: vi.fn(),
}));
vi.mock("../../music-generation/runtime.js", () => musicGenerationRuntimeMocks);
vi.mock("./music-generate-background.js", () => musicGenerateBackgroundMocks);
vi.mock("../../tasks/runtime-internal.js", () => taskRuntimeInternalMocks);
vi.mock("../../tasks/task-executor.js", () => taskExecutorMocks);