perf(ci): trim provider catalog test setup

This commit is contained in:
Peter Steinberger
2026-04-22 05:57:22 +01:00
parent dbf3eca590
commit fbddef34bd
10 changed files with 99 additions and 17 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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"

View File

@@ -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:

View File

@@ -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"

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.

View File

@@ -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:

View File

@@ -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,