mirror of
https://fastgit.cc/github.com/openclaw/openclaw
synced 2026-04-23 02:13:29 +08:00
perf(ci): trim provider catalog test setup
This commit is contained in:
2
.github/actions/setup-node-env/action.yml
vendored
2
.github/actions/setup-node-env/action.yml
vendored
@@ -14,7 +14,7 @@ inputs:
|
||||
pnpm-version:
|
||||
description: pnpm version for corepack.
|
||||
required: false
|
||||
default: "10.32.1"
|
||||
default: "10.33.0"
|
||||
install-bun:
|
||||
description: Whether to install Bun alongside Node.
|
||||
required: false
|
||||
|
||||
@@ -4,7 +4,7 @@ inputs:
|
||||
pnpm-version:
|
||||
description: pnpm version to activate via corepack.
|
||||
required: false
|
||||
default: "10.32.1"
|
||||
default: "10.33.0"
|
||||
cache-key-suffix:
|
||||
description: Suffix appended to the cache key.
|
||||
required: false
|
||||
|
||||
2
.github/workflows/ci.yml
vendored
2
.github/workflows/ci.yml
vendored
@@ -2000,7 +2000,7 @@ jobs:
|
||||
- name: Setup pnpm + cache store
|
||||
uses: ./.github/actions/setup-pnpm-store-cache
|
||||
with:
|
||||
pnpm-version: "10.32.1"
|
||||
pnpm-version: "10.33.0"
|
||||
cache-key-suffix: "node24"
|
||||
use-restore-keys: "false"
|
||||
use-actions-cache: "true"
|
||||
|
||||
2
.github/workflows/macos-release.yml
vendored
2
.github/workflows/macos-release.yml
vendored
@@ -20,7 +20,7 @@ concurrency:
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.x"
|
||||
PNPM_VERSION: "10.32.1"
|
||||
PNPM_VERSION: "10.33.0"
|
||||
|
||||
jobs:
|
||||
validate_macos_release_request:
|
||||
|
||||
@@ -113,7 +113,7 @@ concurrency:
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.x"
|
||||
PNPM_VERSION: "10.32.1"
|
||||
PNPM_VERSION: "10.33.0"
|
||||
OPENCLAW_REPOSITORY: openclaw/openclaw
|
||||
TSX_VERSION: "4.21.0"
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ permissions:
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.x"
|
||||
PNPM_VERSION: "10.32.1"
|
||||
PNPM_VERSION: "10.33.0"
|
||||
|
||||
jobs:
|
||||
validate_selected_ref:
|
||||
|
||||
2
.github/workflows/openclaw-npm-release.yml
vendored
2
.github/workflows/openclaw-npm-release.yml
vendored
@@ -32,7 +32,7 @@ concurrency:
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.x"
|
||||
PNPM_VERSION: "10.32.1"
|
||||
PNPM_VERSION: "10.33.0"
|
||||
|
||||
jobs:
|
||||
# PLEASE DON'T ADD LONG-RUNNING OR FLAKY CHECKS TO THE npm RELEASE PATH.
|
||||
|
||||
2
.github/workflows/plugin-clawhub-release.yml
vendored
2
.github/workflows/plugin-clawhub-release.yml
vendored
@@ -23,7 +23,7 @@ concurrency:
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.x"
|
||||
PNPM_VERSION: "10.32.1"
|
||||
PNPM_VERSION: "10.33.0"
|
||||
CLAWHUB_REGISTRY: "https://clawhub.ai"
|
||||
CLAWHUB_REPOSITORY: "openclaw/clawhub"
|
||||
# Pinned to a reviewed ClawHub commit so release behavior stays reproducible.
|
||||
|
||||
2
.github/workflows/plugin-npm-release.yml
vendored
2
.github/workflows/plugin-npm-release.yml
vendored
@@ -38,7 +38,7 @@ concurrency:
|
||||
env:
|
||||
FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true"
|
||||
NODE_VERSION: "24.x"
|
||||
PNPM_VERSION: "10.32.1"
|
||||
PNPM_VERSION: "10.33.0"
|
||||
|
||||
jobs:
|
||||
preview_plugins_npm:
|
||||
|
||||
@@ -1,9 +1,35 @@
|
||||
import { afterEach, describe, expect, it, vi } from "vitest";
|
||||
import { beforeEach, describe, expect, it, vi } from "vitest";
|
||||
import {
|
||||
loadProviderCatalogModelsForList,
|
||||
resolveProviderCatalogPluginIdsForFilter,
|
||||
} from "./list.provider-catalog.js";
|
||||
|
||||
const providerDiscoveryMocks = vi.hoisted(() => ({
|
||||
resolveBundledProviderCompatPluginIds: vi.fn(),
|
||||
resolveOwningPluginIdsForProvider: vi.fn(),
|
||||
resolvePluginDiscoveryProviders: vi.fn(),
|
||||
resolveProviderContractPluginIdsForProviderAlias: vi.fn(),
|
||||
}));
|
||||
|
||||
vi.mock("../../plugins/providers.js", () => ({
|
||||
resolveBundledProviderCompatPluginIds:
|
||||
providerDiscoveryMocks.resolveBundledProviderCompatPluginIds,
|
||||
resolveOwningPluginIdsForProvider: providerDiscoveryMocks.resolveOwningPluginIdsForProvider,
|
||||
}));
|
||||
|
||||
vi.mock("../../plugins/contracts/registry.js", () => ({
|
||||
resolveProviderContractPluginIdsForProviderAlias:
|
||||
providerDiscoveryMocks.resolveProviderContractPluginIdsForProviderAlias,
|
||||
}));
|
||||
|
||||
vi.mock("../../plugins/provider-discovery.js", async (importOriginal) => {
|
||||
const actual = await importOriginal<typeof import("../../plugins/provider-discovery.js")>();
|
||||
return {
|
||||
...actual,
|
||||
resolvePluginDiscoveryProviders: providerDiscoveryMocks.resolvePluginDiscoveryProviders,
|
||||
};
|
||||
});
|
||||
|
||||
const baseParams = {
|
||||
cfg: {
|
||||
plugins: {
|
||||
@@ -21,9 +47,67 @@ const baseParams = {
|
||||
},
|
||||
};
|
||||
|
||||
const chutesProvider = {
|
||||
id: "chutes",
|
||||
pluginId: "chutes",
|
||||
label: "Chutes",
|
||||
auth: [],
|
||||
staticCatalog: {
|
||||
run: async () => ({
|
||||
provider: { baseUrl: "https://chutes.example/v1", models: [] },
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
const moonshotProvider = {
|
||||
id: "moonshot",
|
||||
pluginId: "moonshot",
|
||||
label: "Moonshot",
|
||||
auth: [],
|
||||
staticCatalog: {
|
||||
run: async () => ({
|
||||
provider: {
|
||||
baseUrl: "https://api.moonshot.ai/v1",
|
||||
models: [{ id: "kimi-k2.6", name: "Kimi K2.6" }],
|
||||
},
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
const openaiProvider = {
|
||||
id: "openai",
|
||||
pluginId: "openai",
|
||||
label: "OpenAI",
|
||||
aliases: ["azure-openai-responses"],
|
||||
auth: [],
|
||||
staticCatalog: {
|
||||
run: async () => ({
|
||||
provider: { baseUrl: "https://api.openai.com/v1", models: [] },
|
||||
}),
|
||||
},
|
||||
};
|
||||
|
||||
const defaultProviders = [chutesProvider, moonshotProvider, openaiProvider];
|
||||
|
||||
describe("loadProviderCatalogModelsForList", () => {
|
||||
afterEach(() => {
|
||||
vi.restoreAllMocks();
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks();
|
||||
providerDiscoveryMocks.resolveBundledProviderCompatPluginIds.mockReturnValue([
|
||||
"chutes",
|
||||
"moonshot",
|
||||
"openai",
|
||||
]);
|
||||
providerDiscoveryMocks.resolveOwningPluginIdsForProvider.mockImplementation(
|
||||
({ provider }: { provider: string }) =>
|
||||
defaultProviders.some((entry) => entry.id === provider) ? [provider] : undefined,
|
||||
);
|
||||
providerDiscoveryMocks.resolveProviderContractPluginIdsForProviderAlias.mockImplementation(
|
||||
(provider: string) => (provider === "azure-openai-responses" ? ["openai"] : undefined),
|
||||
);
|
||||
providerDiscoveryMocks.resolvePluginDiscoveryProviders.mockImplementation(
|
||||
async ({ onlyPluginIds }: { onlyPluginIds?: string[] }) =>
|
||||
defaultProviders.filter((provider) => onlyPluginIds?.includes(provider.pluginId)),
|
||||
);
|
||||
});
|
||||
|
||||
it("does not use live provider discovery for display-only rows", async () => {
|
||||
@@ -62,13 +146,11 @@ describe("loadProviderCatalogModelsForList", () => {
|
||||
});
|
||||
|
||||
it("does not execute workspace provider static catalogs", async () => {
|
||||
const providers = await import("../../plugins/providers.js");
|
||||
const discovery = await import("../../plugins/provider-discovery.js");
|
||||
const workspaceStaticCatalog = vi.fn(async () => ({
|
||||
provider: { baseUrl: "https://workspace.example/v1", models: [] },
|
||||
}));
|
||||
vi.spyOn(providers, "resolveBundledProviderCompatPluginIds").mockReturnValue(["bundled-demo"]);
|
||||
vi.spyOn(discovery, "resolvePluginDiscoveryProviders").mockResolvedValue([
|
||||
providerDiscoveryMocks.resolveBundledProviderCompatPluginIds.mockReturnValue(["bundled-demo"]);
|
||||
providerDiscoveryMocks.resolvePluginDiscoveryProviders.mockResolvedValue([
|
||||
{
|
||||
id: "bundled-demo",
|
||||
pluginId: "bundled-demo",
|
||||
@@ -93,7 +175,7 @@ describe("loadProviderCatalogModelsForList", () => {
|
||||
...baseParams,
|
||||
});
|
||||
|
||||
expect(discovery.resolvePluginDiscoveryProviders).toHaveBeenCalledWith(
|
||||
expect(providerDiscoveryMocks.resolvePluginDiscoveryProviders).toHaveBeenCalledWith(
|
||||
expect.objectContaining({
|
||||
onlyPluginIds: ["bundled-demo"],
|
||||
includeUntrustedWorkspacePlugins: false,
|
||||
|
||||
Reference in New Issue
Block a user