67 lines
2.1 KiB
TypeScript
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");
|
|
});
|
|
});
|