perf(test): narrow plugin registration contract imports (#123902)

* perf(test): narrow plugin registration contract imports

* fix(test): preserve plugin registration contract boundary
This commit is contained in:
Peter Steinberger
2026-08-14 18:25:49 -07:00
committed by GitHub
parent 76e4ef68ce
commit fd8741b4d8
5 changed files with 46 additions and 19 deletions
+15 -1
View File
@@ -1,6 +1,12 @@
/**
* Test SDK subpath for plugin package, registration, and public surface contracts.
*/
import { pluginRegistrationContractRegistry } from "../plugins/contracts/registry.js";
import {
installPluginRegistrationContract,
type PluginRegistrationContractParams,
} from "./test-helpers/plugin-registration-contract.js";
export {
assertNoImportTimeSideEffects,
createPluginRegistryFixture,
@@ -12,7 +18,15 @@ export {
export { runDirectImportSmoke } from "./test-helpers/direct-smoke.js";
export { describePackageManifestContract } from "./test-helpers/package-manifest-contract.js";
export { pluginRegistrationContractCases } from "./test-helpers/plugin-registration-contract-cases.js";
export { describePluginRegistrationContract } from "./test-helpers/plugin-registration-contract.js";
function resolvePluginRegistrationContract(pluginId: string) {
return pluginRegistrationContractRegistry.find((entry) => entry.pluginId === pluginId);
}
/** Installs tests against the runtime plugin registration contract registry. */
export function describePluginRegistrationContract(params: PluginRegistrationContractParams) {
installPluginRegistrationContract(params, resolvePluginRegistrationContract);
}
export {
GUARDED_EXTENSION_PUBLIC_SURFACE_BASENAMES,
BUNDLED_RUNTIME_SIDECAR_BASENAMES,
@@ -1,9 +1,7 @@
/**
* Installs bundled plugin registration contract cases used across provider tests.
*/
import { describePluginRegistrationContract } from "./plugin-registration-contract.js";
type PluginRegistrationContractParams = Parameters<typeof describePluginRegistrationContract>[0];
import type { PluginRegistrationContractParams } from "./plugin-registration-contract.js";
export const pluginRegistrationContractCases = {
alibaba: {
@@ -2,10 +2,9 @@
* Contract suite for bundled plugin registration ownership and manifest auth metadata.
*/
import { describe, expect, it } from "vitest";
import { pluginRegistrationContractRegistry } from "../../plugins/contracts/registry.js";
import { loadPluginManifestRegistryCore } from "../../plugins/manifest-registry.js";
type PluginRegistrationContractParams = {
export type PluginRegistrationContractParams = {
pluginId: string;
cliBackendIds?: string[];
providerIds?: string[];
@@ -30,18 +29,23 @@ type PluginRegistrationContractParams = {
};
};
function findRegistration(pluginId: string) {
const entry = pluginRegistrationContractRegistry.find(
(candidate) => candidate.pluginId === pluginId,
);
if (!entry) {
throw new Error(`plugin registration contract missing for ${pluginId}`);
}
return entry;
}
export type PluginRegistrationContractResolver = (
pluginId: string,
) => Omit<PluginRegistrationContractParams, "manifestAuthChoice"> | undefined;
/** Installs tests that pin a bundled plugin's registered provider/tool ownership. */
export function describePluginRegistrationContract(params: PluginRegistrationContractParams) {
export function installPluginRegistrationContract(
params: PluginRegistrationContractParams,
resolveRegistration: PluginRegistrationContractResolver,
) {
const findRegistration = (pluginId: string) => {
const entry = resolveRegistration(pluginId);
if (!entry) {
throw new Error(`plugin registration contract missing for ${pluginId}`);
}
return entry;
};
describe(`${params.pluginId} plugin registration contract`, () => {
if (params.cliBackendIds) {
it("keeps bundled cli-backend ownership explicit", () => {
@@ -1,11 +1,18 @@
import { pluginRegistrationContractCases } from "../../plugin-sdk/test-helpers/plugin-registration-contract-cases.js";
import {
installPluginRegistrationContract,
type PluginRegistrationContractResolver,
} from "../../plugin-sdk/test-helpers/plugin-registration-contract.js";
// Plugin registration contract tests cover manifest registration cases exposed through the SDK.
import { pluginRegistrationContractCases } from "openclaw/plugin-sdk/plugin-test-contracts";
import { describePluginRegistrationContract } from "openclaw/plugin-sdk/plugin-test-contracts";
import { BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS } from "./inventory/bundled-capability-metadata.js";
const resolvePluginRegistrationContract: PluginRegistrationContractResolver = (pluginId) =>
BUNDLED_PLUGIN_CONTRACT_SNAPSHOTS.find((entry) => entry.pluginId === pluginId);
const pluginRegistrationContractCaseList = Object.values(pluginRegistrationContractCases).toSorted(
(left, right) => left.pluginId.localeCompare(right.pluginId),
);
for (const contractCase of pluginRegistrationContractCaseList) {
describePluginRegistrationContract(contractCase);
installPluginRegistrationContract(contractCase, resolvePluginRegistrationContract);
}
@@ -2,6 +2,8 @@ import fs from "node:fs/promises";
import path from "node:path";
import {
createPluginRegistryFixture,
describePluginRegistrationContract,
pluginRegistrationContractCases,
registerVirtualTestPlugin,
} from "openclaw/plugin-sdk/plugin-test-contracts";
import { withTempHome } from "openclaw/plugin-sdk/test-env";
@@ -13,6 +15,8 @@ const echoCases = typedCases([
{ message: "beta", expected: "scoped:beta" },
]);
describePluginRegistrationContract(pluginRegistrationContractCases.brave);
describe("plugin testing harness contracts", () => {
it("executes declared tools and reports missing tool contracts", async () => {
const previousHome = process.env.HOME;