From c2bbb73e18cbc65f5992a132bd969c95b5ab8d53 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Tue, 12 May 2026 18:53:37 +0100 Subject: [PATCH] test: dedupe setup registry mock reads --- src/plugins/setup-registry.test.ts | 37 +++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/src/plugins/setup-registry.test.ts b/src/plugins/setup-registry.test.ts index e584c2bf4cb1..261648025e34 100644 --- a/src/plugins/setup-registry.test.ts +++ b/src/plugins/setup-registry.test.ts @@ -176,6 +176,29 @@ function requireRecord(value: unknown): Record { return value as Record; } +function mockCall( + mock: { mock: { calls: ReadonlyArray> } }, + callIndex = 0, +): ReadonlyArray { + const call = mock.mock.calls[callIndex]; + if (!call) { + throw new Error(`Expected mock call ${callIndex + 1}`); + } + return call; +} + +function mockArg( + mock: { mock: { calls: ReadonlyArray> } }, + callIndex: number, + argIndex: number, +): unknown { + return mockCall(mock, callIndex)[argIndex]; +} + +function firstRecordArg(mock: { mock: { calls: ReadonlyArray> } }) { + return requireRecord(mockArg(mock, 0, 0)); +} + afterEach(() => { setPluginSetupRegistryModuleLoaderFactoryForTest?.(undefined); cleanupTrackedTempDirs(tempDirs); @@ -218,10 +241,10 @@ describe("setup-registry module loader", () => { } expect(mocks.createJiti).toHaveBeenCalledTimes(1); - expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe( + expect(mockArg(mocks.createJiti, 0, 0)).toBe( pathToFileURL(path.join(pluginRoot, "setup-api.js"), { windows: true }).href, ); - expect(requireRecord(mocks.createJiti.mock.calls.at(0)?.[1]).tryNative).toBe(true); + expect(requireRecord(mockArg(mocks.createJiti, 0, 1)).tryNative).toBe(true); }); it("passes explicit plugin id scope into setup manifest reads", () => { @@ -238,9 +261,7 @@ describe("setup-registry module loader", () => { }); expect(mocks.loadPluginManifestRegistry).toHaveBeenCalledTimes(1); - expect(requireRecord(mocks.loadPluginManifestRegistry.mock.calls.at(0)?.[0]).pluginIds).toEqual( - ["test-plugin"], - ); + expect(firstRecordArg(mocks.loadPluginManifestRegistry).pluginIds).toEqual(["test-plugin"]); }); it("skips setup-api loading when config has no relevant migration triggers", () => { @@ -338,7 +359,7 @@ describe("setup-registry module loader", () => { expect(result.changes).toEqual(["amazon-bedrock"]); expect(mocks.createJiti).toHaveBeenCalledTimes(1); - expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(path.join(bedrockRoot, "setup-api.js")); + expect(mockArg(mocks.createJiti, 0, 0)).toBe(path.join(bedrockRoot, "setup-api.js")); }); it("still loads explicitly configured plugin entries without manifest trigger metadata", () => { @@ -403,7 +424,7 @@ describe("setup-registry module loader", () => { expect(provider.label).toBe("Amazon Bedrock"); expect(resolvePluginSetupProvider({ provider: "legacy-bedrock", env: {} })).toBeUndefined(); expect(mocks.createJiti).toHaveBeenCalledTimes(1); - expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(path.join(pluginRoot, "setup-api.js")); + expect(mockArg(mocks.createJiti, 0, 0)).toBe(path.join(pluginRoot, "setup-api.js")); }); it("treats explicit descriptor-only setup as a runtime cutoff", () => { @@ -632,7 +653,7 @@ describe("setup-registry module loader", () => { expect(second).toEqual(first); expect(resolvePluginSetupCliBackend({ backend: "legacy-openai-cli", env: {} })).toBeUndefined(); expect(mocks.createJiti).toHaveBeenCalledTimes(1); - expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(path.join(openaiRoot, "setup-api.js")); + expect(mockArg(mocks.createJiti, 0, 0)).toBe(path.join(openaiRoot, "setup-api.js")); }); it("keeps synchronously registered cli backends even when register returns a promise", () => {