diff --git a/source/on-extension-start.test.ts b/source/on-extension-start.test.ts index b019d46..0ded565 100644 --- a/source/on-extension-start.test.ts +++ b/source/on-extension-start.test.ts @@ -55,4 +55,21 @@ describe('onExtensionStart', () => { expect(listenerSpy).toHaveBeenCalledTimes(0); expect(listenerSpy2).toHaveBeenCalledTimes(0); }); + + it('should not run the listeners if they are removed', async () => { + const {onExtensionStart} = await import('./on-extension-start.js'); + + const listenerSpy = vi.fn(); + const listenerSpy2 = vi.fn(); + + onExtensionStart.addListener(listenerSpy); + onExtensionStart.addListener(listenerSpy2); + + onExtensionStart.removeListener(listenerSpy); + + await sleep(100); + + expect(listenerSpy).toHaveBeenCalledTimes(0); + expect(listenerSpy2).toHaveBeenCalledTimes(1); + }); }); diff --git a/source/on-extension-start.ts b/source/on-extension-start.ts index c530695..0eb60bc 100644 --- a/source/on-extension-start.ts +++ b/source/on-extension-start.ts @@ -50,6 +50,9 @@ export const onExtensionStart = Object.freeze({ event.addEventListener('extension-start', callback); } }, + removeListener(callback: VoidCallback) { + event.removeEventListener('extension-start', callback); + }, }); // Automatically register the runner