From cdf19111e564d08fc522e548c911d9c06b9b6ee6 Mon Sep 17 00:00:00 2001 From: Gustavo Madeira Santana Date: Sat, 28 Mar 2026 00:23:17 -0400 Subject: [PATCH] Plugins: narrow loader testing helper surface --- src/plugins/loader.test.ts | 16 +++++++--------- src/plugins/loader.ts | 6 ++++-- src/plugins/web-search-providers.runtime.test.ts | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/plugins/loader.test.ts b/src/plugins/loader.test.ts index 8f590675a52..1c2a3373857 100644 --- a/src/plugins/loader.test.ts +++ b/src/plugins/loader.test.ts @@ -11,10 +11,8 @@ import { createHookRunner } from "./hooks.js"; import { __testing, clearPluginLoaderCache, - getCompatibleActivePluginRegistry, loadOpenClawPlugins, resolveRuntimePluginRegistry, - resolvePluginLoadCacheContext, } from "./loader.js"; import { clearPluginManifestRegistryCache } from "./manifest-registry.js"; import { @@ -3563,24 +3561,24 @@ describe("getCompatibleActivePluginRegistry", () => { allowGatewaySubagentBinding: true, }, }; - const { cacheKey } = resolvePluginLoadCacheContext(loadOptions); + const { cacheKey } = __testing.resolvePluginLoadCacheContext(loadOptions); setActivePluginRegistry(registry, cacheKey); - expect(getCompatibleActivePluginRegistry(loadOptions)).toBe(registry); + expect(__testing.getCompatibleActivePluginRegistry(loadOptions)).toBe(registry); expect( - getCompatibleActivePluginRegistry({ + __testing.getCompatibleActivePluginRegistry({ ...loadOptions, workspaceDir: "/tmp/workspace-b", }), ).toBeUndefined(); expect( - getCompatibleActivePluginRegistry({ + __testing.getCompatibleActivePluginRegistry({ ...loadOptions, onlyPluginIds: ["demo"], }), ).toBeUndefined(); expect( - getCompatibleActivePluginRegistry({ + __testing.getCompatibleActivePluginRegistry({ ...loadOptions, runtimeOptions: undefined, }), @@ -3591,7 +3589,7 @@ describe("getCompatibleActivePluginRegistry", () => { const registry = createEmptyPluginRegistry(); setActivePluginRegistry(registry, "startup-registry"); - expect(getCompatibleActivePluginRegistry()).toBe(registry); + expect(__testing.getCompatibleActivePluginRegistry()).toBe(registry); }); it("does not reuse the active registry when core gateway method names differ", () => { @@ -3635,7 +3633,7 @@ describe("resolveRuntimePluginRegistry", () => { }, workspaceDir: "/tmp/workspace-a", }; - const { cacheKey } = resolvePluginLoadCacheContext(loadOptions); + const { cacheKey } = __testing.resolvePluginLoadCacheContext(loadOptions); setActivePluginRegistry(registry, cacheKey); expect(resolveRuntimePluginRegistry(loadOptions)).toBe(registry); diff --git a/src/plugins/loader.ts b/src/plugins/loader.ts index 9c3bc756211..7768510cdf6 100644 --- a/src/plugins/loader.ts +++ b/src/plugins/loader.ts @@ -156,6 +156,8 @@ export const __testing = { resolvePluginSdkAliasFile, resolvePluginRuntimeModulePath, shouldPreferNativeJiti, + getCompatibleActivePluginRegistry, + resolvePluginLoadCacheContext, get maxPluginRegistryCacheEntries() { return pluginRegistryCacheEntryCap; }, @@ -271,7 +273,7 @@ function hasExplicitCompatibilityInputs(options: PluginLoadOptions): boolean { ); } -export function resolvePluginLoadCacheContext(options: PluginLoadOptions = {}) { +function resolvePluginLoadCacheContext(options: PluginLoadOptions = {}) { const env = options.env ?? process.env; const cfg = applyTestPluginDefaults(options.config ?? {}, env); const normalized = normalizePluginsConfig(cfg.plugins); @@ -303,7 +305,7 @@ export function resolvePluginLoadCacheContext(options: PluginLoadOptions = {}) { }; } -export function getCompatibleActivePluginRegistry( +function getCompatibleActivePluginRegistry( options: PluginLoadOptions = {}, ): PluginRegistry | undefined { const activeRegistry = getActivePluginRegistry() ?? undefined; diff --git a/src/plugins/web-search-providers.runtime.test.ts b/src/plugins/web-search-providers.runtime.test.ts index bca4aff2259..9cf18e3617e 100644 --- a/src/plugins/web-search-providers.runtime.test.ts +++ b/src/plugins/web-search-providers.runtime.test.ts @@ -428,7 +428,7 @@ describe("resolvePluginWebSearchProviders", () => { bundledAllowlistCompat: true, env, }); - const { cacheKey } = loaderModule.resolvePluginLoadCacheContext({ + const { cacheKey } = loaderModule.__testing.resolvePluginLoadCacheContext({ config, workspaceDir: DEFAULT_WEB_SEARCH_WORKSPACE, env,