Files
MATTERMOST_OPENCLAW_LIVESTATUS/test/unit/logger.test.js
sol 43cfebee96 feat: Phase 0+1 — repo sync, pino, lint fixes, core components
Phase 0:
- Synced latest live-status.js from workspace (9928 bytes)
- Fixed 43 lint issues: empty catch blocks, console statements
- Added pino dependency
- Created src/tool-labels.json with all known tool mappings
- make check passes

Phase 1 (Core Components):
- src/config.js: env-var config with validation, throws on missing required vars
- src/logger.js: pino singleton with child loggers, level validation
- src/circuit-breaker.js: CLOSED/OPEN/HALF_OPEN state machine with callbacks
- src/tool-labels.js: exact/prefix/regex tool->label resolver with external override
- src/status-box.js: Mattermost post manager (keepAlive, throttle, retry, circuit breaker)
- src/status-formatter.js: pure SessionState->text formatter (nested, compact)
- src/health.js: HTTP health endpoint + metrics
- src/status-watcher.js: JSONL file watcher (inotify, compaction detection, idle detection)

Tests:
- test/unit/config.test.js: 7 tests
- test/unit/circuit-breaker.test.js: 12 tests
- test/unit/logger.test.js: 5 tests
- test/unit/status-formatter.test.js: 20 tests
- test/unit/tool-labels.test.js: 15 tests

All 59 unit tests pass. make check clean.
2026-03-07 17:26:53 +00:00

58 lines
1.4 KiB
JavaScript

'use strict';
/**
* Unit tests for logger.js
*/
const { describe, it, beforeEach, afterEach } = require('node:test');
const assert = require('node:assert/strict');
const { getLogger, sessionLogger, resetLogger } = require('../../src/logger');
describe('logger.js', () => {
beforeEach(() => {
resetLogger();
});
afterEach(() => {
resetLogger();
});
it('getLogger() returns a pino logger', () => {
const logger = getLogger();
assert.ok(logger);
assert.equal(typeof logger.info, 'function');
assert.equal(typeof logger.warn, 'function');
assert.equal(typeof logger.error, 'function');
assert.equal(typeof logger.debug, 'function');
});
it('getLogger() returns the same instance each time (singleton)', () => {
const a = getLogger();
const b = getLogger();
assert.equal(a, b);
});
it('respects LOG_LEVEL env var', () => {
const original = process.env.LOG_LEVEL;
process.env.LOG_LEVEL = 'warn';
const logger = getLogger();
assert.equal(logger.level, 'warn');
process.env.LOG_LEVEL = original;
resetLogger();
});
it('sessionLogger() returns a child logger', () => {
const child = sessionLogger('agent:main:test');
assert.ok(child);
assert.equal(typeof child.info, 'function');
});
it('resetLogger() clears the singleton', () => {
const a = getLogger();
resetLogger();
const b = getLogger();
assert.notEqual(a, b);
});
});