Files
waggle-os/packages/hive-mind-core/tests/logger.test.ts
Oleg Maslov 0c3e2ead3b
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled
moving
2026-09-02 10:10:29 +02:00

49 lines
2.0 KiB
TypeScript

/**
* Logger stderr-routing tests.
*
* Reverse-ported from OSS hive-mind (oss-drift triage R1, 2026-06-11).
* stdout is reserved for program data (MCP stdio transport in
* hive-mind-mcp-server, CLI --json envelopes) — a library log line on
* stdout corrupts machine consumers, so every level must land on stderr.
*/
import { describe, it, expect, vi, afterEach } from 'vitest';
import { createCoreLogger, type CoreLogger } from '../src/logger.js';
describe('createCoreLogger', () => {
afterEach(() => vi.restoreAllMocks());
it('routes every level to stderr — never the stdout-bound console methods', () => {
const info = vi.spyOn(console, 'info').mockImplementation(() => {});
const debug = vi.spyOn(console, 'debug').mockImplementation(() => {});
const log = vi.spyOn(console, 'log').mockImplementation(() => {});
const error = vi.spyOn(console, 'error').mockImplementation(() => {});
const warn = vi.spyOn(console, 'warn').mockImplementation(() => {});
const logger: CoreLogger = createCoreLogger('test');
logger.info('hello');
logger.debug('dbg');
logger.warn('careful');
logger.error('boom');
// None of the stdout-bound console methods may be used.
expect(info).not.toHaveBeenCalled();
expect(debug).not.toHaveBeenCalled();
expect(log).not.toHaveBeenCalled();
// Diagnostics land on stderr (console.error / console.warn).
expect(error).toHaveBeenCalledTimes(3); // info + debug + error
expect(warn).toHaveBeenCalledTimes(1);
});
it('keeps the [waggle:tag] prefix on messages', () => {
const error = vi.spyOn(console, 'error').mockImplementation(() => {});
createCoreLogger('embedding').info('probing');
expect(error).toHaveBeenCalledWith('[waggle:embedding] probing');
});
it('passes structured data through as a second argument', () => {
const error = vi.spyOn(console, 'error').mockImplementation(() => {});
createCoreLogger('pipeline').info('done', { frames: 5 });
expect(error).toHaveBeenCalledWith('[waggle:pipeline] done', { frames: 5 });
});
});