test(pi): share overflow-compaction test setup

This commit is contained in:
Peter Steinberger
2026-02-21 22:56:03 +00:00
parent 2cf9c3abe4
commit f41be7159c
3 changed files with 64 additions and 98 deletions

View File

@@ -1,27 +1,37 @@
import "./run.overflow-compaction.mocks.shared.js"; import "./run.overflow-compaction.mocks.shared.js";
import { beforeEach, describe, expect, it, vi } from "vitest"; import { beforeEach, describe, expect, it, vi } from "vitest";
import { isCompactionFailureError, isLikelyContextOverflowError } from "../pi-embedded-helpers.js";
vi.mock("../../utils.js", () => ({ vi.mock("../../utils.js", () => ({
resolveUserPath: vi.fn((p: string) => p), resolveUserPath: vi.fn((p: string) => p),
})); }));
vi.mock("../pi-embedded-helpers.js", async () => { import { log } from "./logger.js";
return { import { runEmbeddedPiAgent } from "./run.js";
isCompactionFailureError: (msg?: string) => { import { makeAttemptResult, mockOverflowRetrySuccess } from "./run.overflow-compaction.fixture.js";
import {
mockedCompactDirect,
mockedRunEmbeddedAttempt,
mockedSessionLikelyHasOversizedToolResults,
mockedTruncateOversizedToolResultsInSession,
overflowBaseRunParams as baseParams,
} from "./run.overflow-compaction.shared-test.js";
import type { EmbeddedRunAttemptResult } from "./run/types.js";
const mockedIsCompactionFailureError = vi.mocked(isCompactionFailureError);
const mockedIsLikelyContextOverflowError = vi.mocked(isLikelyContextOverflowError);
describe("overflow compaction in run loop", () => {
beforeEach(() => {
vi.clearAllMocks();
mockedIsCompactionFailureError.mockImplementation((msg?: string) => {
if (!msg) { if (!msg) {
return false; return false;
} }
const lower = msg.toLowerCase(); const lower = msg.toLowerCase();
return lower.includes("request_too_large") && lower.includes("summarization failed"); return lower.includes("request_too_large") && lower.includes("summarization failed");
}, });
isContextOverflowError: (msg?: string) => { mockedIsLikelyContextOverflowError.mockImplementation((msg?: string) => {
if (!msg) {
return false;
}
const lower = msg.toLowerCase();
return lower.includes("request_too_large") || lower.includes("request size exceeds");
},
isLikelyContextOverflowError: (msg?: string) => {
if (!msg) { if (!msg) {
return false; return false;
} }
@@ -32,52 +42,12 @@ vi.mock("../pi-embedded-helpers.js", async () => {
lower.includes("context window exceeded") || lower.includes("context window exceeded") ||
lower.includes("prompt too large") lower.includes("prompt too large")
); );
}, });
isFailoverAssistantError: vi.fn(() => false), mockedCompactDirect.mockResolvedValue({
isFailoverErrorMessage: vi.fn(() => false), ok: false,
isAuthAssistantError: vi.fn(() => false), compacted: false,
isRateLimitAssistantError: vi.fn(() => false), reason: "nothing to compact",
isBillingAssistantError: vi.fn(() => false), });
classifyFailoverReason: vi.fn(() => null),
formatAssistantErrorText: vi.fn(() => ""),
parseImageSizeError: vi.fn(() => null),
pickFallbackThinkingLevel: vi.fn(() => null),
isTimeoutErrorMessage: vi.fn(() => false),
parseImageDimensionError: vi.fn(() => null),
};
});
import { compactEmbeddedPiSessionDirect } from "./compact.js";
import { log } from "./logger.js";
import { runEmbeddedPiAgent } from "./run.js";
import { makeAttemptResult, mockOverflowRetrySuccess } from "./run.overflow-compaction.fixture.js";
import { runEmbeddedAttempt } from "./run/attempt.js";
import type { EmbeddedRunAttemptResult } from "./run/types.js";
import {
sessionLikelyHasOversizedToolResults,
truncateOversizedToolResultsInSession,
} from "./tool-result-truncation.js";
const mockedRunEmbeddedAttempt = vi.mocked(runEmbeddedAttempt);
const mockedCompactDirect = vi.mocked(compactEmbeddedPiSessionDirect);
const mockedSessionLikelyHasOversizedToolResults = vi.mocked(sessionLikelyHasOversizedToolResults);
const mockedTruncateOversizedToolResultsInSession = vi.mocked(
truncateOversizedToolResultsInSession,
);
const baseParams = {
sessionId: "test-session",
sessionKey: "test-key",
sessionFile: "/tmp/session.json",
workspaceDir: "/tmp/workspace",
prompt: "hello",
timeoutMs: 30000,
runId: "run-1",
};
describe("overflow compaction in run loop", () => {
beforeEach(() => {
vi.clearAllMocks();
mockedSessionLikelyHasOversizedToolResults.mockReturnValue(false); mockedSessionLikelyHasOversizedToolResults.mockReturnValue(false);
mockedTruncateOversizedToolResultsInSession.mockResolvedValue({ mockedTruncateOversizedToolResultsInSession.mockResolvedValue({
truncated: false, truncated: false,

View File

@@ -0,0 +1,26 @@
import { vi } from "vitest";
import { compactEmbeddedPiSessionDirect } from "./compact.js";
import { runEmbeddedAttempt } from "./run/attempt.js";
import {
sessionLikelyHasOversizedToolResults,
truncateOversizedToolResultsInSession,
} from "./tool-result-truncation.js";
export const mockedRunEmbeddedAttempt = vi.mocked(runEmbeddedAttempt);
export const mockedCompactDirect = vi.mocked(compactEmbeddedPiSessionDirect);
export const mockedSessionLikelyHasOversizedToolResults = vi.mocked(
sessionLikelyHasOversizedToolResults,
);
export const mockedTruncateOversizedToolResultsInSession = vi.mocked(
truncateOversizedToolResultsInSession,
);
export const overflowBaseRunParams = {
sessionId: "test-session",
sessionKey: "test-key",
sessionFile: "/tmp/session.json",
workspaceDir: "/tmp/workspace",
prompt: "hello",
timeoutMs: 30000,
runId: "run-1",
} as const;

View File

@@ -1,23 +1,17 @@
import "./run.overflow-compaction.mocks.shared.js"; import "./run.overflow-compaction.mocks.shared.js";
import { beforeEach, describe, expect, it, vi } from "vitest"; import { beforeEach, describe, expect, it, vi } from "vitest";
import { pickFallbackThinkingLevel } from "../pi-embedded-helpers.js"; import { pickFallbackThinkingLevel } from "../pi-embedded-helpers.js";
import { compactEmbeddedPiSessionDirect } from "./compact.js";
import { runEmbeddedPiAgent } from "./run.js"; import { runEmbeddedPiAgent } from "./run.js";
import { makeAttemptResult, mockOverflowRetrySuccess } from "./run.overflow-compaction.fixture.js"; import { makeAttemptResult, mockOverflowRetrySuccess } from "./run.overflow-compaction.fixture.js";
import { mockedGlobalHookRunner } from "./run.overflow-compaction.mocks.shared.js"; import { mockedGlobalHookRunner } from "./run.overflow-compaction.mocks.shared.js";
import { runEmbeddedAttempt } from "./run/attempt.js";
import type { EmbeddedRunAttemptResult } from "./run/types.js";
import { import {
sessionLikelyHasOversizedToolResults, mockedCompactDirect,
truncateOversizedToolResultsInSession, mockedRunEmbeddedAttempt,
} from "./tool-result-truncation.js"; mockedSessionLikelyHasOversizedToolResults,
mockedTruncateOversizedToolResultsInSession,
const mockedRunEmbeddedAttempt = vi.mocked(runEmbeddedAttempt); overflowBaseRunParams,
const mockedCompactDirect = vi.mocked(compactEmbeddedPiSessionDirect); } from "./run.overflow-compaction.shared-test.js";
const mockedSessionLikelyHasOversizedToolResults = vi.mocked(sessionLikelyHasOversizedToolResults); import type { EmbeddedRunAttemptResult } from "./run/types.js";
const mockedTruncateOversizedToolResultsInSession = vi.mocked(
truncateOversizedToolResultsInSession,
);
const mockedPickFallbackThinkingLevel = vi.mocked(pickFallbackThinkingLevel); const mockedPickFallbackThinkingLevel = vi.mocked(pickFallbackThinkingLevel);
describe("runEmbeddedPiAgent overflow compaction trigger routing", () => { describe("runEmbeddedPiAgent overflow compaction trigger routing", () => {
@@ -61,15 +55,7 @@ describe("runEmbeddedPiAgent overflow compaction trigger routing", () => {
compactDirect: mockedCompactDirect, compactDirect: mockedCompactDirect,
}); });
await runEmbeddedPiAgent({ await runEmbeddedPiAgent(overflowBaseRunParams);
sessionId: "test-session",
sessionKey: "test-key",
sessionFile: "/tmp/session.json",
workspaceDir: "/tmp/workspace",
prompt: "hello",
timeoutMs: 30000,
runId: "run-1",
});
expect(mockedCompactDirect).toHaveBeenCalledTimes(1); expect(mockedCompactDirect).toHaveBeenCalledTimes(1);
expect(mockedCompactDirect).toHaveBeenCalledWith( expect(mockedCompactDirect).toHaveBeenCalledWith(
@@ -124,15 +110,7 @@ describe("runEmbeddedPiAgent overflow compaction trigger routing", () => {
truncatedCount: 1, truncatedCount: 1,
}); });
const result = await runEmbeddedPiAgent({ const result = await runEmbeddedPiAgent(overflowBaseRunParams);
sessionId: "test-session",
sessionKey: "test-key",
sessionFile: "/tmp/session.json",
workspaceDir: "/tmp/workspace",
prompt: "hello",
timeoutMs: 30000,
runId: "run-1",
});
expect(mockedCompactDirect).toHaveBeenCalledTimes(3); expect(mockedCompactDirect).toHaveBeenCalledTimes(3);
expect(mockedTruncateOversizedToolResultsInSession).toHaveBeenCalledTimes(1); expect(mockedTruncateOversizedToolResultsInSession).toHaveBeenCalledTimes(1);
@@ -149,15 +127,7 @@ describe("runEmbeddedPiAgent overflow compaction trigger routing", () => {
); );
mockedPickFallbackThinkingLevel.mockReturnValue("low"); mockedPickFallbackThinkingLevel.mockReturnValue("low");
const result = await runEmbeddedPiAgent({ const result = await runEmbeddedPiAgent(overflowBaseRunParams);
sessionId: "test-session",
sessionKey: "test-key",
sessionFile: "/tmp/session.json",
workspaceDir: "/tmp/workspace",
prompt: "hello",
timeoutMs: 30000,
runId: "run-1",
});
expect(mockedRunEmbeddedAttempt).toHaveBeenCalledTimes(32); expect(mockedRunEmbeddedAttempt).toHaveBeenCalledTimes(32);
expect(mockedCompactDirect).not.toHaveBeenCalled(); expect(mockedCompactDirect).not.toHaveBeenCalled();