From 95ed44ce718cb3ebbc7e0b7d43af604728246c20 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Fri, 13 Mar 2026 19:05:02 +0000 Subject: [PATCH] refactor: share memory watcher test setup --- src/memory/manager.watcher-config.test.ts | 58 ++++++++++------------- 1 file changed, 25 insertions(+), 33 deletions(-) diff --git a/src/memory/manager.watcher-config.test.ts b/src/memory/manager.watcher-config.test.ts index 43682183676..9bb55a8a0bc 100644 --- a/src/memory/manager.watcher-config.test.ts +++ b/src/memory/manager.watcher-config.test.ts @@ -51,14 +51,18 @@ describe("memory watcher config", () => { } }); - it("watches markdown globs and ignores dependency directories", async () => { + async function setupWatcherWorkspace(seedFile: { name: string; contents: string }) { workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-memory-watch-")); extraDir = path.join(workspaceDir, "extra"); await fs.mkdir(path.join(workspaceDir, "memory"), { recursive: true }); await fs.mkdir(extraDir, { recursive: true }); - await fs.writeFile(path.join(extraDir, "notes.md"), "hello"); + await fs.writeFile(path.join(extraDir, seedFile.name), seedFile.contents); + } - const cfg = { + function createWatcherConfig( + overrides?: Partial["defaults"]["memorySearch"]>, + ): OpenClawConfig { + return { agents: { defaults: { workspace: workspaceDir, @@ -69,18 +73,28 @@ describe("memory watcher config", () => { sync: { watch: true, watchDebounceMs: 25, onSessionStart: false, onSearch: false }, query: { minScore: 0, hybrid: { enabled: false } }, extraPaths: [extraDir], + ...overrides, }, }, list: [{ id: "main", default: true }], }, } as OpenClawConfig; + } + async function expectWatcherManager(cfg: OpenClawConfig) { const result = await getMemorySearchManager({ cfg, agentId: "main" }); expect(result.manager).not.toBeNull(); if (!result.manager) { throw new Error("manager missing"); } manager = result.manager as unknown as MemoryIndexManager; + } + + it("watches markdown globs and ignores dependency directories", async () => { + await setupWatcherWorkspace({ name: "notes.md", contents: "hello" }); + const cfg = createWatcherConfig(); + + await expectWatcherManager(cfg); expect(watchMock).toHaveBeenCalledTimes(1); const [watchedPaths, options] = watchMock.mock.calls[0] as unknown as [ @@ -108,37 +122,15 @@ describe("memory watcher config", () => { }); it("watches multimodal extensions with case-insensitive globs", async () => { - workspaceDir = await fs.mkdtemp(path.join(os.tmpdir(), "openclaw-memory-watch-")); - extraDir = path.join(workspaceDir, "extra"); - await fs.mkdir(path.join(workspaceDir, "memory"), { recursive: true }); - await fs.mkdir(extraDir, { recursive: true }); - await fs.writeFile(path.join(extraDir, "PHOTO.PNG"), "png"); + await setupWatcherWorkspace({ name: "PHOTO.PNG", contents: "png" }); + const cfg = createWatcherConfig({ + provider: "gemini", + model: "gemini-embedding-2-preview", + fallback: "none", + multimodal: { enabled: true, modalities: ["image", "audio"] }, + }); - const cfg = { - agents: { - defaults: { - workspace: workspaceDir, - memorySearch: { - provider: "gemini", - model: "gemini-embedding-2-preview", - fallback: "none", - store: { path: path.join(workspaceDir, "index.sqlite"), vector: { enabled: false } }, - sync: { watch: true, watchDebounceMs: 25, onSessionStart: false, onSearch: false }, - query: { minScore: 0, hybrid: { enabled: false } }, - extraPaths: [extraDir], - multimodal: { enabled: true, modalities: ["image", "audio"] }, - }, - }, - list: [{ id: "main", default: true }], - }, - } as OpenClawConfig; - - const result = await getMemorySearchManager({ cfg, agentId: "main" }); - expect(result.manager).not.toBeNull(); - if (!result.manager) { - throw new Error("manager missing"); - } - manager = result.manager as unknown as MemoryIndexManager; + await expectWatcherManager(cfg); expect(watchMock).toHaveBeenCalledTimes(1); const [watchedPaths] = watchMock.mock.calls[0] as unknown as [