

























@@ -86,6 +86,18 @@ function createMigrationProvider(id: string) {
8686};
8787}
888889+function requireMockCallArg(
90+mockFn: { mock: { calls: unknown[][] } },
91+label: string,
92+index = 0,
93+): Record<string, unknown> {
94+const arg = mockFn.mock.calls[index]?.[0] as Record<string, unknown> | undefined;
95+if (!arg) {
96+throw new Error(`expected ${label} call #${index + 1}`);
97+}
98+return arg;
99+}
100+89101describe("migration provider runtime", () => {
90102beforeEach(async () => {
91103vi.clearAllMocks();
@@ -131,21 +143,25 @@ describe("migration provider runtime", () => {
131143cfg: { plugins: { enabled: false } } as OpenClawConfig,
132144});
133145134-expect(mocks.ensureStandaloneRuntimePluginRegistryLoaded).toHaveBeenCalledWith({
135-surface: "active",
136-requiredPluginIds: ["migrate-hermes"],
137-loadOptions: {
138-activate: false,
139-onlyPluginIds: ["migrate-hermes"],
140-config: expect.objectContaining({
141-plugins: expect.objectContaining({
142-enabled: true,
143-entries: {
144-"migrate-hermes": { enabled: true },
145-},
146-}),
147-}),
148-},
146+const standaloneParams = requireMockCallArg(
147+mocks.ensureStandaloneRuntimePluginRegistryLoaded,
148+"ensureStandaloneRuntimePluginRegistryLoaded",
149+) as {
150+surface?: unknown;
151+requiredPluginIds?: unknown;
152+loadOptions?: {
153+activate?: unknown;
154+onlyPluginIds?: unknown;
155+config?: OpenClawConfig;
156+};
157+};
158+expect(standaloneParams.surface).toBe("active");
159+expect(standaloneParams.requiredPluginIds).toEqual(["migrate-hermes"]);
160+expect(standaloneParams.loadOptions?.activate).toBe(false);
161+expect(standaloneParams.loadOptions?.onlyPluginIds).toEqual(["migrate-hermes"]);
162+expect(standaloneParams.loadOptions?.config?.plugins?.enabled).toBe(true);
163+expect(standaloneParams.loadOptions?.config?.plugins?.entries).toEqual({
164+"migrate-hermes": { enabled: true },
149165});
150166});
151167@@ -211,16 +227,22 @@ describe("migration provider runtime", () => {
211227env: process.env,
212228preferPersisted: false,
213229});
214-expect(mocks.loadPluginManifestRegistry).toHaveBeenCalledWith({
215-index: expect.objectContaining({
216-plugins: expect.arrayContaining([
217-expect.objectContaining({ pluginId: "external-migration" }),
218-]),
219-}),
220-config: cfg,
221-env: process.env,
222-includeDisabled: true,
223-});
230+const manifestParams = requireMockCallArg(
231+mocks.loadPluginManifestRegistry,
232+"loadPluginManifestRegistry",
233+) as {
234+index?: MockPluginIndex;
235+config?: OpenClawConfig;
236+env?: NodeJS.ProcessEnv;
237+includeDisabled?: unknown;
238+};
239+expect(manifestParams.index?.plugins.map((plugin) => plugin.pluginId)).toEqual([
240+"external-migration",
241+"disabled-external-migration",
242+]);
243+expect(manifestParams.config).toBe(cfg);
244+expect(manifestParams.env).toBe(process.env);
245+expect(manifestParams.includeDisabled).toBe(true);
224246expect(mocks.resolveRuntimePluginRegistry).toHaveBeenNthCalledWith(1);
225247expect(mocks.resolveRuntimePluginRegistry).toHaveBeenCalledWith({
226248onlyPluginIds: ["external-migration"],
@@ -269,15 +291,27 @@ describe("migration provider runtime", () => {
269291preferPersisted: false,
270292workspaceDir: undefined,
271293});
272-expect(mocks.loadPluginManifestRegistry).toHaveBeenCalledWith({
273-index: expect.objectContaining({
274-plugins: [expect.objectContaining({ pluginId: "migrate-hermes" })],
275-}),
276-config: {},
277-env: process.env,
278-includeDisabled: true,
279-workspaceDir: undefined,
280-});
294+const manifestParams = requireMockCallArg(
295+mocks.loadPluginManifestRegistry,
296+"loadPluginManifestRegistry",
297+) as {
298+index?: MockPluginIndex;
299+config?: OpenClawConfig;
300+env?: NodeJS.ProcessEnv;
301+includeDisabled?: unknown;
302+workspaceDir?: unknown;
303+};
304+expect(manifestParams.index?.plugins).toEqual([
305+{
306+pluginId: "migrate-hermes",
307+origin: "bundled",
308+enabled: true,
309+},
310+]);
311+expect(manifestParams.config).toEqual({});
312+expect(manifestParams.env).toBe(process.env);
313+expect(manifestParams.includeDisabled).toBe(true);
314+expect(manifestParams.workspaceDir).toBeUndefined();
281315expect(mocks.resolveRuntimePluginRegistry).toHaveBeenCalledWith({
282316onlyPluginIds: ["migrate-hermes"],
283317});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。