| 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"); |
| }); |
| }); |
|
|