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.
This commit is contained in:
57
test/unit/logger.test.js
Normal file
57
test/unit/logger.test.js
Normal file
@@ -0,0 +1,57 @@
|
||||
'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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user