






















@@ -176,6 +176,29 @@ function requireRecord(value: unknown): Record<string, unknown> {
176176return value as Record<string, unknown>;
177177}
178178179+function mockCall(
180+mock: { mock: { calls: ReadonlyArray<ReadonlyArray<unknown>> } },
181+callIndex = 0,
182+): ReadonlyArray<unknown> {
183+const call = mock.mock.calls[callIndex];
184+if (!call) {
185+throw new Error(`Expected mock call ${callIndex + 1}`);
186+}
187+return call;
188+}
189+190+function mockArg(
191+mock: { mock: { calls: ReadonlyArray<ReadonlyArray<unknown>> } },
192+callIndex: number,
193+argIndex: number,
194+): unknown {
195+return mockCall(mock, callIndex)[argIndex];
196+}
197+198+function firstRecordArg(mock: { mock: { calls: ReadonlyArray<ReadonlyArray<unknown>> } }) {
199+return requireRecord(mockArg(mock, 0, 0));
200+}
201+179202afterEach(() => {
180203setPluginSetupRegistryModuleLoaderFactoryForTest?.(undefined);
181204cleanupTrackedTempDirs(tempDirs);
@@ -218,10 +241,10 @@ describe("setup-registry module loader", () => {
218241}
219242220243expect(mocks.createJiti).toHaveBeenCalledTimes(1);
221-expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(
244+expect(mockArg(mocks.createJiti, 0, 0)).toBe(
222245pathToFileURL(path.join(pluginRoot, "setup-api.js"), { windows: true }).href,
223246);
224-expect(requireRecord(mocks.createJiti.mock.calls.at(0)?.[1]).tryNative).toBe(true);
247+expect(requireRecord(mockArg(mocks.createJiti, 0, 1)).tryNative).toBe(true);
225248});
226249227250it("passes explicit plugin id scope into setup manifest reads", () => {
@@ -238,9 +261,7 @@ describe("setup-registry module loader", () => {
238261});
239262240263expect(mocks.loadPluginManifestRegistry).toHaveBeenCalledTimes(1);
241-expect(requireRecord(mocks.loadPluginManifestRegistry.mock.calls.at(0)?.[0]).pluginIds).toEqual(
242-["test-plugin"],
243-);
264+expect(firstRecordArg(mocks.loadPluginManifestRegistry).pluginIds).toEqual(["test-plugin"]);
244265});
245266246267it("skips setup-api loading when config has no relevant migration triggers", () => {
@@ -338,7 +359,7 @@ describe("setup-registry module loader", () => {
338359339360expect(result.changes).toEqual(["amazon-bedrock"]);
340361expect(mocks.createJiti).toHaveBeenCalledTimes(1);
341-expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(path.join(bedrockRoot, "setup-api.js"));
362+expect(mockArg(mocks.createJiti, 0, 0)).toBe(path.join(bedrockRoot, "setup-api.js"));
342363});
343364344365it("still loads explicitly configured plugin entries without manifest trigger metadata", () => {
@@ -403,7 +424,7 @@ describe("setup-registry module loader", () => {
403424expect(provider.label).toBe("Amazon Bedrock");
404425expect(resolvePluginSetupProvider({ provider: "legacy-bedrock", env: {} })).toBeUndefined();
405426expect(mocks.createJiti).toHaveBeenCalledTimes(1);
406-expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(path.join(pluginRoot, "setup-api.js"));
427+expect(mockArg(mocks.createJiti, 0, 0)).toBe(path.join(pluginRoot, "setup-api.js"));
407428});
408429409430it("treats explicit descriptor-only setup as a runtime cutoff", () => {
@@ -632,7 +653,7 @@ describe("setup-registry module loader", () => {
632653expect(second).toEqual(first);
633654expect(resolvePluginSetupCliBackend({ backend: "legacy-openai-cli", env: {} })).toBeUndefined();
634655expect(mocks.createJiti).toHaveBeenCalledTimes(1);
635-expect(mocks.createJiti.mock.calls.at(0)?.[0]).toBe(path.join(openaiRoot, "setup-api.js"));
656+expect(mockArg(mocks.createJiti, 0, 0)).toBe(path.join(openaiRoot, "setup-api.js"));
636657});
637658638659it("keeps synchronously registered cli backends even when register returns a promise", () => {
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。