UNPKG

@travetto/test

Version:

Declarative test framework

36 lines (30 loc) 893 B
import util from 'node:util'; import { type ConsoleEvent, type ConsoleListener, ConsoleManager } from '@travetto/runtime'; import type { TestLog } from '../model/test.ts'; /** * Console capturer. Hooks into the Console manager, and collects the * output into a map for test results */ export class ConsoleCapture implements ConsoleListener { static #listener: ConsoleListener = ConsoleManager.get(); out: TestLog[]; start(): this { this.out = []; ConsoleManager.set(this); return this; } log({ args, scope: _, ...rest }: ConsoleEvent): void { this.out.push({ ...rest, message: args .map((arg => typeof arg === 'string' ? arg : util.inspect(arg, false, 5))) .join(' ') }); } end(): TestLog[] { const result = this.out ?? []; this.out = []; ConsoleManager.set(ConsoleCapture.#listener); return result; } }