Skip to content

Commit edf3609

Browse files
committed
Add RecordingLogger that keeps track of groups
1 parent 15a3d32 commit edf3609

File tree

1 file changed

+54
-1
lines changed

1 file changed

+54
-1
lines changed

src/testing-utils.ts

Lines changed: 54 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,11 +147,64 @@ export function setupActionsVars(tempDir: string, toolsDir: string) {
147147
process.env["GITHUB_WORKSPACE"] = tempDir;
148148
}
149149

150+
type LogLevel = "debug" | "info" | "warning" | "error";
151+
150152
export interface LoggedMessage {
151-
type: "debug" | "info" | "warning" | "error";
153+
type: LogLevel;
152154
message: string | Error;
153155
}
154156

157+
export class RecordingLogger implements Logger {
158+
messages: LoggedMessage[] = [];
159+
groups: string[] = [];
160+
unfinishedGroups: Set<string> = new Set();
161+
private currentGroup: string | undefined = undefined;
162+
163+
constructor(private readonly logToConsole: boolean = true) {}
164+
165+
private addMessage(level: LogLevel, message: string | Error): void {
166+
this.messages.push({ type: level, message });
167+
168+
if (this.logToConsole) {
169+
// eslint-disable-next-line no-console
170+
console.debug(message);
171+
}
172+
}
173+
174+
isDebug() {
175+
return true;
176+
}
177+
178+
debug(message: string) {
179+
this.addMessage("debug", message);
180+
}
181+
182+
info(message: string) {
183+
this.addMessage("info", message);
184+
}
185+
186+
warning(message: string | Error) {
187+
this.addMessage("warning", message);
188+
}
189+
190+
error(message: string | Error) {
191+
this.addMessage("error", message);
192+
}
193+
194+
startGroup(name: string) {
195+
this.groups.push(name);
196+
this.currentGroup = name;
197+
this.unfinishedGroups.add(name);
198+
}
199+
200+
endGroup() {
201+
if (this.currentGroup !== undefined) {
202+
this.unfinishedGroups.delete(this.currentGroup);
203+
}
204+
this.currentGroup = undefined;
205+
}
206+
}
207+
155208
export function getRecordingLogger(
156209
messages: LoggedMessage[],
157210
{ logToConsole }: { logToConsole?: boolean } = { logToConsole: true },

0 commit comments

Comments
 (0)