test: trim acp spawn parent stream resets

This commit is contained in:
Peter Steinberger
2026-04-03 18:56:17 +01:00
parent 91a3554cd7
commit de49b26bb1

View File

@@ -1,4 +1,4 @@
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
import { mergeMockedModule } from "../test-utils/vitest-module-mocks.js";
const enqueueSystemEventMock = vi.fn();
@@ -11,27 +11,33 @@ vi.mock("../infra/system-events.js", () => ({
enqueueSystemEvent: (...args: unknown[]) => enqueueSystemEventMock(...args),
}));
vi.mock("../infra/heartbeat-wake.js", async (importOriginal) => {
vi.mock("../infra/heartbeat-wake.js", async () => {
return await mergeMockedModule(
await importOriginal<typeof import("../infra/heartbeat-wake.js")>(),
await vi.importActual<typeof import("../infra/heartbeat-wake.js")>(
"../infra/heartbeat-wake.js",
),
() => ({
requestHeartbeatNow: (...args: unknown[]) => requestHeartbeatNowMock(...args),
}),
);
});
vi.mock("../acp/runtime/session-meta.js", async (importOriginal) => {
vi.mock("../acp/runtime/session-meta.js", async () => {
return await mergeMockedModule(
await importOriginal<typeof import("../acp/runtime/session-meta.js")>(),
await vi.importActual<typeof import("../acp/runtime/session-meta.js")>(
"../acp/runtime/session-meta.js",
),
() => ({
readAcpSessionEntry: (...args: unknown[]) => readAcpSessionEntryMock(...args),
}),
);
});
vi.mock("../config/sessions/paths.js", async (importOriginal) => {
vi.mock("../config/sessions/paths.js", async () => {
return await mergeMockedModule(
await importOriginal<typeof import("../config/sessions/paths.js")>(),
await vi.importActual<typeof import("../config/sessions/paths.js")>(
"../config/sessions/paths.js",
),
() => ({
resolveSessionFilePath: (...args: unknown[]) => resolveSessionFilePathMock(...args),
resolveSessionFilePathOptions: (...args: unknown[]) =>
@@ -44,68 +50,24 @@ let emitAgentEvent: typeof import("../infra/agent-events.js").emitAgentEvent;
let resolveAcpSpawnStreamLogPath: typeof import("./acp-spawn-parent-stream.js").resolveAcpSpawnStreamLogPath;
let startAcpSpawnParentStreamRelay: typeof import("./acp-spawn-parent-stream.js").startAcpSpawnParentStreamRelay;
async function loadFreshAcpSpawnParentStreamModulesForTest() {
vi.resetModules();
vi.doMock("../infra/system-events.js", () => ({
enqueueSystemEvent: (...args: unknown[]) => enqueueSystemEventMock(...args),
}));
vi.doMock("../infra/heartbeat-wake.js", async () => {
return await mergeMockedModule(
await vi.importActual<typeof import("../infra/heartbeat-wake.js")>(
"../infra/heartbeat-wake.js",
),
() => ({
requestHeartbeatNow: (...args: unknown[]) => requestHeartbeatNowMock(...args),
}),
);
});
vi.doMock("../acp/runtime/session-meta.js", async () => {
return await mergeMockedModule(
await vi.importActual<typeof import("../acp/runtime/session-meta.js")>(
"../acp/runtime/session-meta.js",
),
() => ({
readAcpSessionEntry: (...args: unknown[]) => readAcpSessionEntryMock(...args),
}),
);
});
vi.doMock("../config/sessions/paths.js", async () => {
return await mergeMockedModule(
await vi.importActual<typeof import("../config/sessions/paths.js")>(
"../config/sessions/paths.js",
),
() => ({
resolveSessionFilePath: (...args: unknown[]) => resolveSessionFilePathMock(...args),
resolveSessionFilePathOptions: (...args: unknown[]) =>
resolveSessionFilePathOptionsMock(...args),
}),
);
});
const [agentEvents, relayModule] = await Promise.all([
import("../infra/agent-events.js"),
import("./acp-spawn-parent-stream.js"),
]);
return {
emitAgentEvent: agentEvents.emitAgentEvent,
resolveAcpSpawnStreamLogPath: relayModule.resolveAcpSpawnStreamLogPath,
startAcpSpawnParentStreamRelay: relayModule.startAcpSpawnParentStreamRelay,
};
}
function collectedTexts() {
return enqueueSystemEventMock.mock.calls.map((call) => String(call[0] ?? ""));
}
describe("startAcpSpawnParentStreamRelay", () => {
beforeEach(async () => {
beforeAll(async () => {
({ emitAgentEvent } = await import("../infra/agent-events.js"));
({ resolveAcpSpawnStreamLogPath, startAcpSpawnParentStreamRelay } =
await import("./acp-spawn-parent-stream.js"));
});
beforeEach(() => {
enqueueSystemEventMock.mockClear();
requestHeartbeatNowMock.mockClear();
readAcpSessionEntryMock.mockReset();
resolveSessionFilePathMock.mockReset();
resolveSessionFilePathOptionsMock.mockReset();
resolveSessionFilePathOptionsMock.mockImplementation((value: unknown) => value);
({ emitAgentEvent, resolveAcpSpawnStreamLogPath, startAcpSpawnParentStreamRelay } =
await loadFreshAcpSpawnParentStreamModulesForTest());
vi.useFakeTimers();
vi.setSystemTime(new Date("2026-03-04T01:00:00.000Z"));
});