Complete paired-room SSOT cleanup and logger singleton
This commit is contained in:
33
src/logger.test.ts
Normal file
33
src/logger.test.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
import { describe, expect, it, vi } from 'vitest';
|
||||
|
||||
describe('logger singleton', () => {
|
||||
it('reuses the root logger and does not add duplicate process listeners across module reloads', async () => {
|
||||
vi.resetModules();
|
||||
|
||||
const beforeUncaught = process.listeners('uncaughtException').length;
|
||||
const beforeUnhandled = process.listeners('unhandledRejection').length;
|
||||
const beforeExit = process.listeners('exit').length;
|
||||
|
||||
const first = await import('./logger.js');
|
||||
|
||||
const afterFirstUncaught = process.listeners('uncaughtException').length;
|
||||
const afterFirstUnhandled = process.listeners('unhandledRejection').length;
|
||||
const afterFirstExit = process.listeners('exit').length;
|
||||
|
||||
vi.resetModules();
|
||||
|
||||
const second = await import('./logger.js');
|
||||
|
||||
const afterSecondUncaught = process.listeners('uncaughtException').length;
|
||||
const afterSecondUnhandled = process.listeners('unhandledRejection').length;
|
||||
const afterSecondExit = process.listeners('exit').length;
|
||||
|
||||
expect(second.logger).toBe(first.logger);
|
||||
expect(afterFirstUncaught).toBeGreaterThanOrEqual(beforeUncaught);
|
||||
expect(afterFirstUnhandled).toBeGreaterThanOrEqual(beforeUnhandled);
|
||||
expect(afterSecondUncaught).toBe(afterFirstUncaught);
|
||||
expect(afterSecondUnhandled).toBe(afterFirstUnhandled);
|
||||
expect(afterFirstExit).toBeGreaterThanOrEqual(beforeExit);
|
||||
expect(afterSecondExit).toBe(afterFirstExit);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user