/
TestLogger.ts
37 lines (31 loc) · 1.1 KB
/
TestLogger.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import { Logger, LogLevel, removeIf } from "../lib/utils";
import { deepStrictEqual as equal, fail } from "assert";
const levelMap: Record<LogLevel, string> = {
[LogLevel.Error]: "error: ",
[LogLevel.Warn]: "warn: ",
[LogLevel.Info]: "info: ",
[LogLevel.Verbose]: "debug: ",
};
export class TestLogger extends Logger {
messages: string[] = [];
discardDebugMessages() {
removeIf(this.messages, (msg) => msg.startsWith("debug"));
}
expectMessage(message: string) {
const index = this.messages.indexOf(message);
if (index === -1) {
const messages = this.messages.join("\n\t") || "(none logged)";
fail(
`Expected "${message}" to be logged. The logged messages were:\n\t${messages}`
);
}
this.messages.splice(index, 1);
}
expectNoOtherMessages() {
equal(this.messages, [], "Expected no other messages to be logged.");
}
override log(message: string, level: LogLevel): void {
super.log(message, level);
this.messages.push(levelMap[level] + message);
}
}