refactor(runs-tests): share run handle factory

This commit is contained in:
Peter Steinberger 2026-03-17 07:51:58 +00:00
parent b531af82d5
commit 8c8b0ab224

View File

@ -10,6 +10,17 @@ import {
waitForActiveEmbeddedRuns,
} from "./runs.js";
function createRunHandle(
overrides: { isCompacting?: boolean; abort?: ReturnType<typeof vi.fn> } = {},
) {
return {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => overrides.isCompacting ?? false,
abort: overrides.abort ?? vi.fn(),
};
}
describe("pi-embedded runner run registry", () => {
afterEach(() => {
__testing.resetActiveEmbeddedRuns();
@ -20,19 +31,12 @@ describe("pi-embedded runner run registry", () => {
const abortCompacting = vi.fn();
const abortNormal = vi.fn();
setActiveEmbeddedRun("session-compacting", {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => true,
abort: abortCompacting,
});
setActiveEmbeddedRun(
"session-compacting",
createRunHandle({ isCompacting: true, abort: abortCompacting }),
);
setActiveEmbeddedRun("session-normal", {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => false,
abort: abortNormal,
});
setActiveEmbeddedRun("session-normal", createRunHandle({ abort: abortNormal }));
const aborted = abortEmbeddedPiRun(undefined, { mode: "compacting" });
expect(aborted).toBe(true);
@ -44,19 +48,9 @@ describe("pi-embedded runner run registry", () => {
const abortA = vi.fn();
const abortB = vi.fn();
setActiveEmbeddedRun("session-a", {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => true,
abort: abortA,
});
setActiveEmbeddedRun("session-a", createRunHandle({ isCompacting: true, abort: abortA }));
setActiveEmbeddedRun("session-b", {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => false,
abort: abortB,
});
setActiveEmbeddedRun("session-b", createRunHandle({ abort: abortB }));
const aborted = abortEmbeddedPiRun(undefined, { mode: "all" });
expect(aborted).toBe(true);
@ -67,12 +61,7 @@ describe("pi-embedded runner run registry", () => {
it("waits for active runs to drain", async () => {
vi.useFakeTimers();
try {
const handle = {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => false,
abort: vi.fn(),
};
const handle = createRunHandle();
setActiveEmbeddedRun("session-a", handle);
setTimeout(() => {
clearActiveEmbeddedRun("session-a", handle);
@ -92,12 +81,7 @@ describe("pi-embedded runner run registry", () => {
it("returns drained=false when timeout elapses", async () => {
vi.useFakeTimers();
try {
setActiveEmbeddedRun("session-a", {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => false,
abort: vi.fn(),
});
setActiveEmbeddedRun("session-a", createRunHandle());
const waitPromise = waitForActiveEmbeddedRuns(1_000, { pollMs: 100 });
await vi.advanceTimersByTimeAsync(1_000);
@ -118,12 +102,7 @@ describe("pi-embedded runner run registry", () => {
import.meta.url,
"./runs.js?scope=shared-b",
);
const handle = {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => false,
abort: vi.fn(),
};
const handle = createRunHandle();
runsA.__testing.resetActiveEmbeddedRuns();
runsB.__testing.resetActiveEmbeddedRuns();
@ -141,12 +120,7 @@ describe("pi-embedded runner run registry", () => {
});
it("tracks and clears per-session transcript snapshots for active runs", () => {
const handle = {
queueMessage: async () => {},
isStreaming: () => true,
isCompacting: () => false,
abort: vi.fn(),
};
const handle = createRunHandle();
setActiveEmbeddedRun("session-snapshot", handle);
updateActiveEmbeddedRunSnapshot("session-snapshot", {