From b54c642bd66ad0a80a2dec301e8994d493a52108 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Wed, 29 Apr 2026 11:04:29 -0700 Subject: [PATCH] test(infra): assert dotenv structured warning --- src/infra/dotenv.test.ts | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/src/infra/dotenv.test.ts b/src/infra/dotenv.test.ts index 0e7b36a1400..9ac0bb4fa5e 100644 --- a/src/infra/dotenv.test.ts +++ b/src/infra/dotenv.test.ts @@ -5,6 +5,14 @@ import { describe, expect, it, vi } from "vitest"; import { loadCliDotEnv } from "../cli/dotenv.js"; import { loadDotEnv, loadWorkspaceDotEnvFile } from "./dotenv.js"; +const loggerMocks = vi.hoisted(() => ({ + warn: vi.fn(), +})); + +vi.mock("../logging/subsystem.js", () => ({ + createSubsystemLogger: vi.fn(() => loggerMocks), +})); + const CREDENTIAL_AND_GATEWAY_ENV_KEYS = [ "ANTHROPIC_API_KEY", "ANTHROPIC_API_KEY_SECONDARY", @@ -152,14 +160,18 @@ describe("loadDotEnv", () => { vi.spyOn(process, "cwd").mockReturnValue(cwdDir); delete process.env.FOO; delete process.env.BAR; - const warn = vi.spyOn(console, "warn").mockImplementation(() => undefined); + loggerMocks.warn.mockClear(); loadDotEnv({ quiet: true }); expect(process.env.FOO).toBe("from-global"); expect(process.env.BAR).toBe("from-gateway"); - expect(warn).toHaveBeenCalledWith(expect.stringContaining("Conflicting values in")); - expect(warn).toHaveBeenCalledWith(expect.stringContaining("gateway.env")); + expect(loggerMocks.warn).toHaveBeenCalledWith( + expect.stringContaining("Conflicting values in"), + expect.objectContaining({ + ignoredPath: expect.stringContaining("gateway.env"), + }), + ); }); }); });