From 98ef659a42cc36d48825e5be80909e3a3e77f142 Mon Sep 17 00:00:00 2001 From: Shakker Date: Fri, 8 May 2026 20:08:22 +0100 Subject: [PATCH] test: tighten fire and forget log assertion --- src/hooks/fire-and-forget.test.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/hooks/fire-and-forget.test.ts b/src/hooks/fire-and-forget.test.ts index 2545b2b302e..70656da2aef 100644 --- a/src/hooks/fire-and-forget.test.ts +++ b/src/hooks/fire-and-forget.test.ts @@ -1,6 +1,15 @@ import { describe, expect, it, vi } from "vitest"; import { fireAndForgetBoundedHook, fireAndForgetHook } from "./fire-and-forget.js"; +function requireFirstLog(logger: ReturnType): string { + const message = logger.mock.calls[0]?.[0]; + expect(message).toBeDefined(); + if (typeof message !== "string") { + throw new Error("expected string log message"); + } + return message; +} + describe("fireAndForgetHook", () => { it("logs rejection errors as sanitized single-line messages", async () => { const logger = vi.fn(); @@ -11,8 +20,9 @@ describe("fireAndForgetHook", () => { ); await Promise.resolve(); expect(logger).toHaveBeenCalledWith(expect.stringMatching(/^hook failed: boom forged secret/)); - expect(logger.mock.calls[0]?.[0]).not.toContain("\n"); - expect(logger.mock.calls[0]?.[0]).not.toContain("sk-test1234567890"); + const message = requireFirstLog(logger); + expect(message).not.toContain("\n"); + expect(message).not.toContain("sk-test1234567890"); }); it("does not log for resolved tasks", async () => {