mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-04 15:40:22 +00:00
test: isolate embedded runner provider policy tests
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import type { Model } from "@mariozechner/pi-ai";
|
||||
import { describe, expect, it, vi } from "vitest";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-stream-simple-mock.js";
|
||||
import { __testing as extraParamsTesting } from "./extra-params.js";
|
||||
import { runExtraParamsCase } from "./extra-params.test-support.js";
|
||||
|
||||
vi.mock("@mariozechner/pi-ai", async () =>
|
||||
@@ -9,6 +10,17 @@ vi.mock("@mariozechner/pi-ai", async () =>
|
||||
),
|
||||
);
|
||||
|
||||
beforeEach(() => {
|
||||
extraParamsTesting.setProviderRuntimeDepsForTest({
|
||||
prepareProviderExtraParams: (params) => params.context.extraParams,
|
||||
wrapProviderStreamFn: () => undefined,
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
extraParamsTesting.resetProviderRuntimeDepsForTest();
|
||||
});
|
||||
|
||||
describe("extra-params: Google thinking payload compatibility", () => {
|
||||
it("strips negative thinking budgets and fills Gemini 3.1 thinkingLevel", () => {
|
||||
const payload = runExtraParamsCase({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Model, SimpleStreamOptions } from "@mariozechner/pi-ai";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import { createPiAiStreamSimpleMock } from "../../../test/helpers/agents/pi-ai-stream-simple-mock.js";
|
||||
import type { OpenClawConfig } from "../../config/config.js";
|
||||
|
||||
@@ -10,6 +10,7 @@ vi.mock("@mariozechner/pi-ai", async () =>
|
||||
);
|
||||
|
||||
let runExtraParamsCase: typeof import("./extra-params.test-support.js").runExtraParamsCase;
|
||||
let extraParamsTesting: typeof import("./extra-params.js").__testing;
|
||||
|
||||
type ToolStreamCase = {
|
||||
applyProvider: string;
|
||||
@@ -32,9 +33,41 @@ function runToolStreamCase(params: ToolStreamCase) {
|
||||
|
||||
describe("extra-params: provider tool_stream support", () => {
|
||||
beforeEach(async () => {
|
||||
vi.resetModules();
|
||||
vi.doUnmock("../../plugins/provider-runtime.js");
|
||||
({ __testing: extraParamsTesting } = await import("./extra-params.js"));
|
||||
({ runExtraParamsCase } = await import("./extra-params.test-support.js"));
|
||||
extraParamsTesting.setProviderRuntimeDepsForTest({
|
||||
prepareProviderExtraParams: (params) => {
|
||||
const extraParams = { ...params.context.extraParams };
|
||||
if (
|
||||
(params.provider === "zai" || params.provider === "xai") &&
|
||||
extraParams.tool_stream !== false
|
||||
) {
|
||||
extraParams.tool_stream = true;
|
||||
}
|
||||
return extraParams;
|
||||
},
|
||||
wrapProviderStreamFn: (params) => {
|
||||
const extraParams = params.context.extraParams ?? {};
|
||||
if (extraParams.tool_stream !== true) {
|
||||
return undefined;
|
||||
}
|
||||
const inner = params.context.streamFn;
|
||||
return (model, context, options) =>
|
||||
inner?.(model, context, {
|
||||
...options,
|
||||
onPayload(payload, payloadModel) {
|
||||
if (payload && typeof payload === "object") {
|
||||
(payload as Record<string, unknown>).tool_stream = true;
|
||||
}
|
||||
options?.onPayload?.(payload, payloadModel);
|
||||
},
|
||||
}) as ReturnType<NonNullable<typeof inner>>;
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
extraParamsTesting.resetProviderRuntimeDepsForTest();
|
||||
});
|
||||
|
||||
it("injects tool_stream=true for zai provider by default", () => {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { describe, it } from "vitest";
|
||||
import { describe, it, vi } from "vitest";
|
||||
import {
|
||||
buildForwardCompatTemplate,
|
||||
expectResolvedForwardCompatFallbackWithRegistryResult,
|
||||
@@ -6,6 +6,19 @@ import {
|
||||
import { resolveModelWithRegistry } from "./model.js";
|
||||
import { createProviderRuntimeTestMock } from "./model.provider-runtime.test-support.js";
|
||||
|
||||
vi.mock("../../plugins/provider-runtime.js", () => ({
|
||||
applyProviderResolvedModelCompatWithPlugins: () => undefined,
|
||||
applyProviderResolvedTransportWithPlugin: () => undefined,
|
||||
buildProviderUnknownModelHintWithPlugin: () => undefined,
|
||||
clearProviderRuntimeHookCache: () => undefined,
|
||||
normalizeProviderResolvedModelWithPlugin: () => undefined,
|
||||
normalizeProviderTransportWithPlugin: () => undefined,
|
||||
prepareProviderDynamicModel: async () => undefined,
|
||||
resolveProviderBuiltInModelSuppression: () => undefined,
|
||||
runProviderDynamicModel: () => undefined,
|
||||
shouldPreferProviderRuntimeResolvedModel: () => false,
|
||||
}));
|
||||
|
||||
const ANTHROPIC_OPUS_TEMPLATE = buildForwardCompatTemplate({
|
||||
id: "claude-opus-4-5",
|
||||
name: "Claude Opus 4.5",
|
||||
|
||||
Reference in New Issue
Block a user