Files
openclaw/src/logging/logger-settings.test.ts
Mikhail Beliakov fd934a566b feat(cli): add json schema to cli tool (#54523)
Merged via squash.

Prepared head SHA: 39c15ee70d
Co-authored-by: kvokka <15954013+kvokka@users.noreply.github.com>
Co-authored-by: altaywtf <9790196+altaywtf@users.noreply.github.com>
Reviewed-by: @altaywtf
2026-03-26 02:30:32 +03:00

82 lines
2.7 KiB
TypeScript

import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
const { fallbackRequireMock, readLoggingConfigMock, shouldSkipMutatingLoggingConfigReadMock } =
vi.hoisted(() => ({
readLoggingConfigMock: vi.fn(() => undefined),
shouldSkipMutatingLoggingConfigReadMock: vi.fn(() => false),
fallbackRequireMock: vi.fn(() => {
throw new Error("config fallback should not be used in this test");
}),
}));
vi.mock("./config.js", () => ({
readLoggingConfig: readLoggingConfigMock,
shouldSkipMutatingLoggingConfigRead: shouldSkipMutatingLoggingConfigReadMock,
}));
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();
shouldSkipMutatingLoggingConfigReadMock.mockReset();
shouldSkipMutatingLoggingConfigReadMock.mockReturnValue(false);
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");
});
it("skips fallback config loads for config schema", () => {
process.env.OPENCLAW_TEST_FILE_LOG = "1";
shouldSkipMutatingLoggingConfigReadMock.mockReturnValue(true);
const settings = logging.getResolvedLoggerSettings();
expect(settings.level).toBe("info");
expect(fallbackRequireMock).not.toHaveBeenCalled();
});
});