Tests: share provider registration helpers (#48767)

This commit is contained in:
Vincent Koc
2026-03-16 22:50:40 -07:00
committed by GitHub
parent 64c69c3fc9
commit 357ce71988
3 changed files with 27 additions and 29 deletions

View File

@@ -32,7 +32,7 @@ import {
ZAI_CODING_GLOBAL_BASE_URL,
} from "../plugins/provider-model-definitions.js";
import type { ProviderPlugin } from "../plugins/types.js";
import { createCapturedPluginRegistration } from "../test-utils/plugin-registration.js";
import { registerProviderPlugins } from "../test-utils/plugin-registration.js";
import type { WizardPrompter } from "../wizard/prompts.js";
import { applyAuthChoice, resolvePreferredProviderForAuthChoice } from "./auth-choice.js";
import { GOOGLE_GEMINI_DEFAULT_MODEL } from "./google-gemini-model-default.js";
@@ -82,8 +82,7 @@ type StoredAuthProfile = {
};
function createDefaultProviderPlugins() {
const captured = createCapturedPluginRegistration();
for (const plugin of [
return registerProviderPlugins(
anthropicPlugin,
cloudflareAiGatewayPlugin,
googlePlugin,
@@ -106,10 +105,7 @@ function createDefaultProviderPlugins() {
xaiPlugin,
xiaomiPlugin,
zaiPlugin,
]) {
plugin.register(captured.api);
}
return captured.providers;
);
}
describe("applyAuthChoice", () => {

View File

@@ -1,25 +1,7 @@
import { createCapturedPluginRegistration } from "../../test-utils/plugin-registration.js";
import type { OpenClawPluginApi, ProviderPlugin } from "../types.js";
type RegistrablePlugin = {
register(api: OpenClawPluginApi): void;
};
export function registerProviders(...plugins: RegistrablePlugin[]) {
const captured = createCapturedPluginRegistration();
for (const plugin of plugins) {
plugin.register(captured.api);
}
return captured.providers;
}
export function requireProvider(providers: ProviderPlugin[], providerId: string) {
const provider = providers.find((entry) => entry.id === providerId);
if (!provider) {
throw new Error(`provider ${providerId} missing`);
}
return provider;
}
export {
registerProviderPlugins as registerProviders,
requireRegisteredProvider as requireProvider,
} from "../../test-utils/plugin-registration.js";
export function uniqueSortedStrings(values: readonly string[]) {
return [...new Set(values)].toSorted((left, right) => left.localeCompare(right));

View File

@@ -3,6 +3,10 @@ import type { OpenClawPluginApi, ProviderPlugin } from "../plugins/types.js";
export { createCapturedPluginRegistration };
type RegistrablePlugin = {
register(api: OpenClawPluginApi): void;
};
export function registerSingleProviderPlugin(params: {
register(api: OpenClawPluginApi): void;
}): ProviderPlugin {
@@ -14,3 +18,19 @@ export function registerSingleProviderPlugin(params: {
}
return provider;
}
export function registerProviderPlugins(...plugins: RegistrablePlugin[]): ProviderPlugin[] {
const captured = createCapturedPluginRegistration();
for (const plugin of plugins) {
plugin.register(captured.api);
}
return captured.providers;
}
export function requireRegisteredProvider(providers: ProviderPlugin[], providerId: string) {
const provider = providers.find((entry) => entry.id === providerId);
if (!provider) {
throw new Error(`provider ${providerId} missing`);
}
return provider;
}