From 8fe83e24acbd6968cba2db9c8780282d6e1ab99b Mon Sep 17 00:00:00 2001 From: "paseo-bot[bot]" <266920839+paseo-bot[bot]@users.noreply.github.com> Date: Mon, 2 Nov 2026 08:27:30 +0000 Subject: [PATCH] test(pi): separate stopped and failed history replay cases --- .../server/agent/providers/pi/agent.test.ts | 81 +++++++++++-------- 1 file changed, 47 insertions(+), 34 deletions(-) diff --git a/packages/server/src/server/agent/providers/pi/agent.test.ts b/packages/server/src/server/agent/providers/pi/agent.test.ts index 60aab1bad9..008a3a4fac 100644 --- a/packages/server/src/server/agent/providers/pi/agent.test.ts +++ b/packages/server/src/server/agent/providers/pi/agent.test.ts @@ -1641,40 +1641,53 @@ describe("PiRpcAgentSession", () => { expect(pi.latestSession().closeCalls).toBe(1); }); - test.each(["stopped", "failed"] as const)( - "closes a history-only Pi runtime when replay is %s", - async (outcome) => { - const pi = new FakePi(); - pi.queueSessionSetup((runtimeSession) => { - runtimeSession.messages = [ - { role: "user", content: "Old question" }, - { role: "assistant", content: [{ type: "text", text: "Old answer" }] }, - ]; - if (outcome === "failed") - runtimeSession.getMessagesError = new Error("History unavailable"); - }); - const session = await createClient(pi).resumeSession( - { - provider: "pi", - sessionId: "pi-session-1", - nativeHandle: "/tmp/native-pi-session", - metadata: { cwd: tmpdir() }, - }, - {}, - undefined, - { purpose: "history" }, - ); - onTestFinished(() => session.close()); - const history = session.streamHistory(); - if (outcome === "failed") { - await expect(history.next()).rejects.toThrow("History unavailable"); - } else { - expect((await history.next()).done).toBe(false); - await history.return(); - } - expect(pi.latestSession().closeCalls).toBe(1); - }, - ); + test("closes a history-only Pi runtime when replay is stopped", async () => { + const pi = new FakePi(); + pi.queueSessionSetup((runtimeSession) => { + runtimeSession.messages = [ + { role: "user", content: "Old question" }, + { role: "assistant", content: [{ type: "text", text: "Old answer" }] }, + ]; + }); + const session = await createClient(pi).resumeSession( + { + provider: "pi", + sessionId: "pi-session-1", + nativeHandle: "/tmp/native-pi-session", + metadata: { cwd: tmpdir() }, + }, + {}, + undefined, + { purpose: "history" }, + ); + onTestFinished(() => session.close()); + const history = session.streamHistory(); + expect((await history.next()).done).toBe(false); + await history.return(); + expect(pi.latestSession().closeCalls).toBe(1); + }); + + test("closes a history-only Pi runtime when replay fails", async () => { + const pi = new FakePi(); + pi.queueSessionSetup((runtimeSession) => { + runtimeSession.getMessagesError = new Error("History unavailable"); + }); + const session = await createClient(pi).resumeSession( + { + provider: "pi", + sessionId: "pi-session-1", + nativeHandle: "/tmp/native-pi-session", + metadata: { cwd: tmpdir() }, + }, + {}, + undefined, + { purpose: "history" }, + ); + onTestFinished(() => session.close()); + const history = session.streamHistory(); + await expect(history.next()).rejects.toThrow("History unavailable"); + expect(pi.latestSession().closeCalls).toBe(1); + }); test("keeps an interactive Pi runtime open after replaying history", async () => { const pi = new FakePi();