mirror of
https://github.com/openclaw/openclaw.git
synced 2026-05-02 08:10:22 +00:00
refactor: move extension-owned tests to extensions
This commit is contained in:
@@ -2,15 +2,14 @@ import { mkdtempSync } from "node:fs";
|
||||
import { tmpdir } from "node:os";
|
||||
import { join } from "node:path";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
MOONSHOT_BASE_URL as MOONSHOT_AI_BASE_URL,
|
||||
MOONSHOT_CN_BASE_URL,
|
||||
} from "../../extensions/moonshot/api.js";
|
||||
import { captureEnv } from "../test-utils/env.js";
|
||||
import { resolveImplicitProvidersForTest } from "./models-config.e2e-harness.js";
|
||||
import { applyNativeStreamingUsageCompat } from "./models-config.providers.js";
|
||||
import { buildMoonshotProvider } from "./models-config.providers.static.js";
|
||||
|
||||
const MOONSHOT_AI_BASE_URL = "https://api.moonshot.ai/v1";
|
||||
const MOONSHOT_CN_BASE_URL = "https://api.moonshot.cn/v1";
|
||||
|
||||
describe("moonshot implicit provider (#33637)", () => {
|
||||
it("uses explicit CN baseUrl when provided", async () => {
|
||||
const agentDir = mkdtempSync(join(tmpdir(), "openclaw-test-"));
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import fs from "node:fs/promises";
|
||||
import path from "node:path";
|
||||
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import type { ModelDefinitionConfig } from "../config/types.models.js";
|
||||
import { resolveOpenClawAgentDir } from "./agent-paths.js";
|
||||
import {
|
||||
CUSTOM_PROXY_MODELS_CONFIG,
|
||||
@@ -12,6 +13,63 @@ import {
|
||||
} from "./models-config.e2e-harness.js";
|
||||
import type { ProviderConfig as ModelsProviderConfig } from "./models-config.providers.js";
|
||||
|
||||
function createModel(id: string): ModelDefinitionConfig {
|
||||
return {
|
||||
id,
|
||||
name: id,
|
||||
reasoning: false,
|
||||
input: ["text"],
|
||||
cost: {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
},
|
||||
contextWindow: 128_000,
|
||||
maxTokens: 8_192,
|
||||
};
|
||||
}
|
||||
|
||||
function buildDeepSeekProvider(): ModelsProviderConfig {
|
||||
return {
|
||||
baseUrl: "https://api.deepseek.com/v1",
|
||||
api: "openai-completions",
|
||||
models: [createModel("deepseek-chat")],
|
||||
};
|
||||
}
|
||||
|
||||
function buildMinimaxProvider(): ModelsProviderConfig {
|
||||
return {
|
||||
baseUrl: "https://api.minimax.io/anthropic",
|
||||
api: "anthropic-messages",
|
||||
models: [createModel("MiniMax-M2.7")],
|
||||
};
|
||||
}
|
||||
|
||||
function buildMistralProvider(): ModelsProviderConfig {
|
||||
return {
|
||||
baseUrl: "https://api.mistral.ai/v1",
|
||||
api: "openai-completions",
|
||||
models: [createModel("mistral-medium-latest")],
|
||||
};
|
||||
}
|
||||
|
||||
function buildSyntheticProvider(): ModelsProviderConfig {
|
||||
return {
|
||||
baseUrl: "https://api.synthetic.new/anthropic",
|
||||
api: "anthropic-messages",
|
||||
models: [createModel("hf:MiniMaxAI/MiniMax-M2.5")],
|
||||
};
|
||||
}
|
||||
|
||||
function buildXaiProvider(): ModelsProviderConfig {
|
||||
return {
|
||||
baseUrl: "https://api.x.ai/v1",
|
||||
api: "openai-completions",
|
||||
models: [createModel("grok-4-fast")],
|
||||
};
|
||||
}
|
||||
|
||||
vi.mock("./auth-profiles/external-cli-sync.js", () => ({
|
||||
syncExternalCliCredentials: () => false,
|
||||
}));
|
||||
@@ -20,19 +78,6 @@ vi.mock("./models-config.providers.js", async () => {
|
||||
const actual = await vi.importActual<typeof import("./models-config.providers.js")>(
|
||||
"./models-config.providers.js",
|
||||
);
|
||||
const [
|
||||
{ buildDeepSeekProvider },
|
||||
{ buildMinimaxProvider },
|
||||
{ buildMistralProvider },
|
||||
{ buildSyntheticProvider },
|
||||
{ buildXaiProvider },
|
||||
] = await Promise.all([
|
||||
import("../../extensions/deepseek/provider-catalog.js"),
|
||||
import("../../extensions/minimax/provider-catalog.js"),
|
||||
import("../../extensions/mistral/provider-catalog.js"),
|
||||
import("../../extensions/synthetic/provider-catalog.js"),
|
||||
import("../../extensions/xai/provider-catalog.js"),
|
||||
]);
|
||||
return {
|
||||
...actual,
|
||||
resolveImplicitProviders: async ({ env }: { env?: NodeJS.ProcessEnv }) => {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import type { Skill } from "@mariozechner/pi-coding-agent";
|
||||
|
||||
export function resolveSkillSource(skill: Skill): string {
|
||||
return skill.sourceInfo.source;
|
||||
return (skill as Skill & { sourceInfo?: { source?: string } }).sourceInfo?.source ?? "unknown";
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import {
|
||||
import * as hookRunnerGlobal from "../plugins/hook-runner-global.js";
|
||||
import type { HookRunner } from "../plugins/hooks.js";
|
||||
import { setActivePluginRegistry } from "../plugins/runtime.js";
|
||||
import { createTestRegistry } from "../test-utils/channel-plugins.js";
|
||||
import { createChannelTestPluginBase, createTestRegistry } from "../test-utils/channel-plugins.js";
|
||||
import * as piEmbedded from "./pi-embedded.js";
|
||||
import * as agentStep from "./tools/agent-step.js";
|
||||
|
||||
@@ -190,7 +190,6 @@ vi.mock("./subagent-registry-runtime.js", () => subagentRegistryMock);
|
||||
describe("subagent announce formatting", () => {
|
||||
let previousFastTestEnv: string | undefined;
|
||||
let runSubagentAnnounceFlow: (typeof import("./subagent-announce.js"))["runSubagentAnnounceFlow"];
|
||||
let matrixPlugin: (typeof import("../../extensions/matrix/index.js"))["matrixPlugin"];
|
||||
|
||||
beforeAll(async () => {
|
||||
// Set FAST_TEST_MODE before importing the module to ensure the module-level
|
||||
@@ -199,7 +198,6 @@ describe("subagent announce formatting", () => {
|
||||
// See: https://github.com/openclaw/openclaw/issues/31298
|
||||
previousFastTestEnv = process.env.OPENCLAW_TEST_FAST;
|
||||
process.env.OPENCLAW_TEST_FAST = "1";
|
||||
({ matrixPlugin } = await import("../../extensions/matrix/index.js"));
|
||||
({ runSubagentAnnounceFlow } = await import("./subagent-announce.js"));
|
||||
});
|
||||
|
||||
@@ -316,7 +314,13 @@ describe("subagent announce formatting", () => {
|
||||
sessionStore = {};
|
||||
sessionBindingServiceTesting.resetSessionBindingAdaptersForTests();
|
||||
setActivePluginRegistry(
|
||||
createTestRegistry([{ pluginId: "matrix", plugin: matrixPlugin, source: "test" }]),
|
||||
createTestRegistry([
|
||||
{
|
||||
pluginId: "matrix",
|
||||
plugin: createChannelTestPluginBase({ id: "matrix", label: "Matrix" }),
|
||||
source: "test",
|
||||
},
|
||||
]),
|
||||
);
|
||||
setConfigOverride({
|
||||
session: {
|
||||
|
||||
Reference in New Issue
Block a user