Files
Moltbot/src/logging/logger-settings.test.ts
2026-03-02 18:41:58 +00:00

67 lines
2.1 KiB
TypeScript

import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const { fallbackRequireMock, readLoggingConfigMock } = vi.hoisted(() => ({
readLoggingConfigMock: vi.fn(() => undefined),
fallbackRequireMock: vi.fn(() => {
throw new Error("config fallback should not be used in this test");
}),
}));
vi.mock("./config.js", () => ({
readLoggingConfig: readLoggingConfigMock,
}));
vi.mock("./node-require.js", () => ({
resolveNodeRequireFromMeta: () => fallbackRequireMock,
}));
let originalTestFileLog: string | undefined;
let originalOpenClawLogLevel: string | undefined;
let logging: typeof import("../logging.js");
beforeAll(async () => {
logging = await import("../logging.js");
});
beforeEach(() => {
originalTestFileLog = process.env.OPENCLAW_TEST_FILE_LOG;
originalOpenClawLogLevel = process.env.OPENCLAW_LOG_LEVEL;
delete process.env.OPENCLAW_TEST_FILE_LOG;
delete process.env.OPENCLAW_LOG_LEVEL;
readLoggingConfigMock.mockClear();
fallbackRequireMock.mockClear();
logging.resetLogger();
logging.setLoggerOverride(null);
});
afterEach(() => {
if (originalTestFileLog === undefined) {
delete process.env.OPENCLAW_TEST_FILE_LOG;
} else {
process.env.OPENCLAW_TEST_FILE_LOG = originalTestFileLog;
}
if (originalOpenClawLogLevel === undefined) {
delete process.env.OPENCLAW_LOG_LEVEL;
} else {
process.env.OPENCLAW_LOG_LEVEL = originalOpenClawLogLevel;
}
logging.resetLogger();
logging.setLoggerOverride(null);
vi.restoreAllMocks();
});
describe("getResolvedLoggerSettings", () => {
it("uses a silent fast path in default Vitest mode without config reads", () => {
const settings = logging.getResolvedLoggerSettings();
expect(settings.level).toBe("silent");
expect(readLoggingConfigMock).not.toHaveBeenCalled();
expect(fallbackRequireMock).not.toHaveBeenCalled();
});
it("reads logging config when test file logging is explicitly enabled", () => {
process.env.OPENCLAW_TEST_FILE_LOG = "1";
const settings = logging.getResolvedLoggerSettings();
expect(settings.level).toBe("info");
});
});