mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-21 10:01:37 -06:00
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:
committed by
GitHub
parent
76e4ef68ce
commit
fd8741b4d8
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user