From eba6dfa9ea576cc6359a7235cea0c047a3c6e7bc Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sun, 10 May 2026 23:43:11 +0100 Subject: [PATCH] test: tighten legacy config assertions --- src/config/config-misc.test.ts | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/src/config/config-misc.test.ts b/src/config/config-misc.test.ts index 82f7a408e2c..89f54578f0c 100644 --- a/src/config/config-misc.test.ts +++ b/src/config/config-misc.test.ts @@ -47,6 +47,10 @@ function issueMessages(issues: Array<{ message: string }>): string[] { return issues.map((issue) => issue.message); } +function expectSomeIssueMessageContains(issues: Array<{ message: string }>, text: string): void { + expect(issueMessages(issues).some((message) => message.includes(text))).toBe(true); +} + describe("boolean config validation", () => { it.each(nonBooleanConfigCases)("rejects non-boolean values for $name", ({ config }) => { const result = OpenClawSchema.safeParse(config); @@ -1024,11 +1028,9 @@ describe("config strict validation", () => { const snap = await readConfigFileSnapshot(); expect(snap.valid).toBe(false); - expect(issueMessages(snap.issues)).toEqual( - expect.arrayContaining([expect.stringContaining('"memorySearch"')]), - ); + expectSomeIssueMessageContains(snap.issues, '"memorySearch"'); expect(issuePaths(snap.legacyIssues)).toContain("memorySearch"); - expect((snap.sourceConfig as { memorySearch?: unknown }).memorySearch).toMatchObject({ + expect((snap.sourceConfig as { memorySearch?: unknown }).memorySearch).toEqual({ provider: "local", fallback: "none", query: { maxResults: 7 }, @@ -1049,11 +1051,9 @@ describe("config strict validation", () => { const snap = await readConfigFileSnapshot(); expect(snap.valid).toBe(false); - expect(issueMessages(snap.issues)).toEqual( - expect.arrayContaining([expect.stringContaining('"heartbeat"')]), - ); + expectSomeIssueMessageContains(snap.issues, '"heartbeat"'); expect(issuePaths(snap.legacyIssues)).toContain("heartbeat"); - expect((snap.sourceConfig as { heartbeat?: unknown }).heartbeat).toMatchObject({ + expect((snap.sourceConfig as { heartbeat?: unknown }).heartbeat).toEqual({ every: "30m", model: "anthropic/claude-3-5-haiku-20241022", }); @@ -1074,11 +1074,9 @@ describe("config strict validation", () => { const snap = await readConfigFileSnapshot(); expect(snap.valid).toBe(false); - expect(issueMessages(snap.issues)).toEqual( - expect.arrayContaining([expect.stringContaining('"heartbeat"')]), - ); + expectSomeIssueMessageContains(snap.issues, '"heartbeat"'); expect(issuePaths(snap.legacyIssues)).toContain("heartbeat"); - expect((snap.sourceConfig as { heartbeat?: unknown }).heartbeat).toMatchObject({ + expect((snap.sourceConfig as { heartbeat?: unknown }).heartbeat).toEqual({ showOk: true, showAlerts: false, useIndicator: true, @@ -1132,12 +1130,10 @@ describe("config strict validation", () => { const snap = await readConfigFileSnapshot(); expect(snap.valid).toBe(false); - expect(issuePaths(snap.issues)).toEqual( - expect.arrayContaining(["agents.defaults.sandbox", "agents.list.0.sandbox"]), - ); - expect(issuePaths(snap.legacyIssues)).toEqual( - expect.arrayContaining(["agents.defaults.sandbox", "agents.list"]), - ); + expect(issuePaths(snap.issues)).toContain("agents.defaults.sandbox"); + expect(issuePaths(snap.issues)).toContain("agents.list.0.sandbox"); + expect(issuePaths(snap.legacyIssues)).toContain("agents.defaults.sandbox"); + expect(issuePaths(snap.legacyIssues)).toContain("agents.list"); expect(snap.sourceConfig.agents?.defaults?.sandbox).toEqual({ perSession: true }); expect(snap.sourceConfig.agents?.list?.[0]?.sandbox).toEqual({ perSession: false }); });