refactor(runs-tests): share run handle factory
This commit is contained in:
parent
b531af82d5
commit
8c8b0ab224
@ -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", {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user