mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-06 14:51:08 +00:00
test: trim acp spawn parent stream resets
This commit is contained in:
@@ -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"));
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user