import { describe, it, afterEach, mock } from 'node:test'; import assert from 'node:assert/strict'; import { section, step, line, ok, warn, error } from './log.js'; afterEach(() => mock.restoreAll()); describe('log helpers', () => { it('formats section and step messages', () => { const calls = []; mock.method(console, 'log', (...args) => { calls.push(args.join(' ')); }); section('Pipeline'); step('Step1', 'Start'); assert.deepEqual(calls, [ '\n=== Pipeline ===', '\n[Step1] Start', ]); }); it('formats line and ok messages with console.log', () => { const calls = []; mock.method(console, 'log', (...args) => { calls.push(args.join(' ')); }); line('hello'); ok('done'); assert.deepEqual(calls, [ ' - hello', ' ✓ done', ]); }); it('formats warn messages with console.warn', () => { const calls = []; mock.method(console, 'warn', (...args) => { calls.push(args.join(' ')); }); warn('careful'); assert.deepEqual(calls, [' ! careful']); }); it('formats error messages with console.error', () => { const calls = []; mock.method(console, 'error', (...args) => { calls.push(args.join(' ')); }); error('boom'); assert.deepEqual(calls, [' x boom']); }); });