Files
openclaw/src/memory/manager.sync-errors-do-not-crash.test.ts
T
2026-03-22 02:11:43 +00:00

34 lines
981 B
TypeScript

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { runDetachedMemorySync } from "./manager-sync-ops.js";
describe("memory manager sync failures", () => {
beforeEach(() => {
vi.useFakeTimers();
});
afterEach(async () => {
vi.useRealTimers();
});
it("does not raise unhandledRejection when watch-triggered sync fails", async () => {
const unhandled: unknown[] = [];
const handler = (reason: unknown) => {
unhandled.push(reason);
};
process.on("unhandledRejection", handler);
const syncSpy = vi
.fn()
.mockRejectedValueOnce(new Error("openai embeddings failed: 400 bad request"));
setTimeout(() => {
runDetachedMemorySync(syncSpy, "watch");
}, 1);
await vi.runOnlyPendingTimersAsync();
vi.useRealTimers();
await syncSpy.mock.results[0]?.value?.catch(() => undefined);
process.off("unhandledRejection", handler);
expect(unhandled).toHaveLength(0);
});
});