import { afterEach, describe, expect, it } from "vitest"; import { setConsoleSubsystemFilter } from "./console.js"; import { resetLogger, setLoggerOverride } from "./logger.js"; import { createSubsystemLogger } from "./subsystem.js"; afterEach(() => { setConsoleSubsystemFilter(null); setLoggerOverride(null); resetLogger(); }); describe("createSubsystemLogger().isEnabled", () => { it("returns true for any/file when only file logging would emit", () => { setLoggerOverride({ level: "debug", consoleLevel: "silent" }); const log = createSubsystemLogger("agent/embedded"); expect(log.isEnabled("debug")).toBe(true); expect(log.isEnabled("debug", "file")).toBe(true); expect(log.isEnabled("debug", "console")).toBe(false); }); it("returns true for any/console when only console logging would emit", () => { setLoggerOverride({ level: "silent", consoleLevel: "debug" }); const log = createSubsystemLogger("agent/embedded"); expect(log.isEnabled("debug")).toBe(true); expect(log.isEnabled("debug", "console")).toBe(true); expect(log.isEnabled("debug", "file")).toBe(false); }); it("returns false when neither console nor file logging would emit", () => { setLoggerOverride({ level: "silent", consoleLevel: "silent" }); const log = createSubsystemLogger("agent/embedded"); expect(log.isEnabled("debug")).toBe(false); expect(log.isEnabled("debug", "console")).toBe(false); expect(log.isEnabled("debug", "file")).toBe(false); }); it("honors console subsystem filters for console target", () => { setLoggerOverride({ level: "silent", consoleLevel: "info" }); setConsoleSubsystemFilter(["gateway"]); const log = createSubsystemLogger("agent/embedded"); expect(log.isEnabled("info", "console")).toBe(false); }); it("does not apply console subsystem filters to file target", () => { setLoggerOverride({ level: "info", consoleLevel: "silent" }); setConsoleSubsystemFilter(["gateway"]); const log = createSubsystemLogger("agent/embedded"); expect(log.isEnabled("info", "file")).toBe(true); expect(log.isEnabled("info")).toBe(true); }); });