diff --git a/.gitignore-extra b/.gitignore-extra new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/.gitignore-extra @@ -0,0 +1 @@ +node_modules diff --git a/dashcaddy-api/__tests__/shutdown-coordinator.test.js b/dashcaddy-api/__tests__/shutdown-coordinator.test.js index fe145f1..651fb15 100644 --- a/dashcaddy-api/__tests__/shutdown-coordinator.test.js +++ b/dashcaddy-api/__tests__/shutdown-coordinator.test.js @@ -409,6 +409,32 @@ describe('ShutdownCoordinator (DC-067)', () => { }); describe('installSignalHandlers()', () => { + // Track listeners added during each test so we can remove them in + // afterEach. process.on() listeners leak across tests otherwise. + let addedListeners; + let originalProcessOn; + + beforeEach(() => { + addedListeners = []; + originalProcessOn = process.on; + // Wrap process.on to record every (signal, listener) pair we add. + // Must capture originalProcessOn at wrap time so we can call it. + const realOn = originalProcessOn; + process.on = function patchedOn(signal, listener) { + addedListeners.push({ signal, listener }); + return realOn.call(process, signal, listener); + }; + }); + + afterEach(() => { + process.on = originalProcessOn; + for (const { signal, listener } of addedListeners) { + originalProcessOn.call(process, signal, listener); // ensure clean slate + process.removeListener(signal, listener); + } + addedListeners = []; + }); + test('registers listeners on the given signals', () => { const c = createShutdownCoordinator({ server: makeFakeServer(),