mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-23 07:51:33 +00:00
71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
|
|
type LoggerModule = typeof import("./logger.js");
|
|
|
|
const originalGetBuiltinModule = (
|
|
process as NodeJS.Process & { getBuiltinModule?: (id: string) => unknown }
|
|
).getBuiltinModule;
|
|
|
|
async function importBrowserSafeLogger(params?: {
|
|
resolvePreferredOpenClawTmpDir?: ReturnType<typeof vi.fn>;
|
|
}): Promise<{
|
|
module: LoggerModule;
|
|
resolvePreferredOpenClawTmpDir: ReturnType<typeof vi.fn>;
|
|
}> {
|
|
vi.resetModules();
|
|
const resolvePreferredOpenClawTmpDir =
|
|
params?.resolvePreferredOpenClawTmpDir ??
|
|
vi.fn(() => {
|
|
throw new Error("resolvePreferredOpenClawTmpDir should not run during browser-safe import");
|
|
});
|
|
|
|
vi.doMock("../infra/tmp-openclaw-dir.js", async () => {
|
|
const actual = await vi.importActual<typeof import("../infra/tmp-openclaw-dir.js")>(
|
|
"../infra/tmp-openclaw-dir.js",
|
|
);
|
|
return {
|
|
...actual,
|
|
resolvePreferredOpenClawTmpDir,
|
|
};
|
|
});
|
|
|
|
Object.defineProperty(process, "getBuiltinModule", {
|
|
configurable: true,
|
|
value: undefined,
|
|
});
|
|
|
|
const module = await import("./logger.js");
|
|
return { module, resolvePreferredOpenClawTmpDir };
|
|
}
|
|
|
|
describe("logging/logger browser-safe import", () => {
|
|
afterEach(() => {
|
|
vi.resetModules();
|
|
vi.doUnmock("../infra/tmp-openclaw-dir.js");
|
|
Object.defineProperty(process, "getBuiltinModule", {
|
|
configurable: true,
|
|
value: originalGetBuiltinModule,
|
|
});
|
|
});
|
|
|
|
it("does not resolve the preferred temp dir at import time when node fs is unavailable", async () => {
|
|
const { module, resolvePreferredOpenClawTmpDir } = await importBrowserSafeLogger();
|
|
|
|
expect(resolvePreferredOpenClawTmpDir).not.toHaveBeenCalled();
|
|
expect(module.DEFAULT_LOG_DIR).toBe("/tmp/openclaw");
|
|
expect(module.DEFAULT_LOG_FILE).toBe("/tmp/openclaw/openclaw.log");
|
|
});
|
|
|
|
it("disables file logging when imported in a browser-like environment", async () => {
|
|
const { module, resolvePreferredOpenClawTmpDir } = await importBrowserSafeLogger();
|
|
|
|
expect(module.getResolvedLoggerSettings()).toMatchObject({
|
|
level: "silent",
|
|
file: "/tmp/openclaw/openclaw.log",
|
|
});
|
|
expect(module.isFileLogLevelEnabled("info")).toBe(false);
|
|
expect(() => module.getLogger().info("browser-safe")).not.toThrow();
|
|
expect(resolvePreferredOpenClawTmpDir).not.toHaveBeenCalled();
|
|
});
|
|
});
|