Skip to content

Commit cb78e94

Browse files
committed
Silence default runtime logs and add logger tests
1 parent 84fe10e commit cb78e94

2 files changed

Lines changed: 44 additions & 1 deletion

File tree

src/backend/util/file-logger.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,12 @@ export const createLogger = (
1919
logFilePath: string | undefined
2020
): Pick<Console, "log" | "error"> => {
2121
if (!logFilePath) {
22-
return console;
22+
return {
23+
log: () => undefined,
24+
error: (...values: unknown[]) => {
25+
console.error(...values);
26+
}
27+
};
2328
}
2429

2530
const resolvedPath = path.resolve(logFilePath);

tests/backend/file-logger.test.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
import fs from "node:fs";
2+
import os from "node:os";
3+
import path from "node:path";
4+
import { afterEach, describe, expect, test, vi } from "vitest";
5+
import { createLogger } from "../../src/backend/util/file-logger.js";
6+
7+
afterEach(() => {
8+
vi.restoreAllMocks();
9+
});
10+
11+
describe("file logger", () => {
12+
test("is quiet by default except for errors", () => {
13+
const logSpy = vi.spyOn(console, "log").mockImplementation(() => undefined);
14+
const errorSpy = vi.spyOn(console, "error").mockImplementation(() => undefined);
15+
const logger = createLogger(undefined);
16+
17+
logger.log("debug line");
18+
logger.error("boom");
19+
20+
expect(logSpy).not.toHaveBeenCalled();
21+
expect(errorSpy).toHaveBeenCalledWith("boom");
22+
});
23+
24+
test("writes log and error entries to file when debug path is provided", () => {
25+
const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "tmux-mobile-logger-"));
26+
const logPath = path.join(tmpDir, "debug.log");
27+
const logger = createLogger(logPath);
28+
29+
logger.log("hello", { a: 1 });
30+
logger.error(new Error("oops"));
31+
32+
const content = fs.readFileSync(logPath, "utf8");
33+
expect(content).toContain("[INFO] hello {\"a\":1}");
34+
expect(content).toContain("[ERROR] Error: oops");
35+
36+
fs.rmSync(tmpDir, { recursive: true, force: true });
37+
});
38+
});

0 commit comments

Comments
 (0)