From 197cb2a379955bbf0b815c71f45042eb4121c848 Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Sun, 27 Sep 2026 22:55:09 +0800 Subject: [PATCH] test(desktop): await update coordinator admission cleanup --- apps/desktop/tests/update-coordinator.spec.ts | 4 ++-- apps/desktop/tests/update-schedule.spec.ts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/apps/desktop/tests/update-coordinator.spec.ts b/apps/desktop/tests/update-coordinator.spec.ts index ef0c02a496..951228e216 100644 --- a/apps/desktop/tests/update-coordinator.spec.ts +++ b/apps/desktop/tests/update-coordinator.spec.ts @@ -189,7 +189,7 @@ describe('desktop update coordinator', () => { f.checkForUpdates.mockImplementation(() => checked.promise) const pending = f.coordinator.check() await Promise.resolve() - f.coordinator.dispose() + await f.coordinator.dispose() expect(() => f.events.emit('error', new Error('late network failure'))).not.toThrow() checked.reject(new Error('offline')) await pending @@ -284,7 +284,7 @@ describe('desktop update coordinator', () => { const checked = Promise.withResolvers<{ isUpdateAvailable: boolean; updateInfo: { version: string } }>() f.checkForUpdates.mockImplementation(() => checked.promise) const pending = f.coordinator.check() - f.coordinator.dispose() + await f.coordinator.dispose() checked.resolve({ isUpdateAvailable: true, updateInfo: { version: '1.1.0-rc.2' } }) await pending expect(f.states).toEqual([]) diff --git a/apps/desktop/tests/update-schedule.spec.ts b/apps/desktop/tests/update-schedule.spec.ts index 9d481f21fc..3ccf2ca064 100644 --- a/apps/desktop/tests/update-schedule.spec.ts +++ b/apps/desktop/tests/update-schedule.spec.ts @@ -8,10 +8,10 @@ vi.mock('electron', () => ({ app: { isPackaged: false } })) vi.mock('electron-updater', () => ({ default: { autoUpdater: {} } })) const { DesktopUpdateCoordinator } = await import('../src/update-coordinator.ts') -const cleanup: (() => void)[] = [] +const cleanup: (() => Promise)[] = [] beforeEach(() => { vi.useFakeTimers() }) -afterEach(() => { - for (const dispose of cleanup.splice(0)) dispose() +afterEach(async () => { + await Promise.all(cleanup.splice(0).map(dispose => dispose())) vi.useRealTimers() vi.restoreAllMocks() }) @@ -28,7 +28,7 @@ function fixture(jitter = 0, random = () => 0.5) { const coordinator = new DesktopUpdateCoordinator((state) => { states.push(state); return state }, async () => true, updater, () => true, () => '1.0.0') const schedule = new DesktopUpdateSchedule(coordinator, { intervalMs: 10_000, maxBackoffMs: 40_000, jitter }, random) - cleanup.push(() => { schedule.dispose(); coordinator.dispose() }) + cleanup.push(async () => { schedule.dispose(); await coordinator.dispose() }) return { schedule, coordinator, states, checkForUpdates, downloadUpdate } } @@ -145,7 +145,7 @@ describe('ordinary update polling', () => { try { await started.promise f.schedule.dispose() - f.coordinator.dispose() + await f.coordinator.dispose() await expect(f.schedule.check(true)).rejects.toThrow('disposed') } finally { pending.resolve({ isUpdateAvailable: false, updateInfo: { version: '1.0.0' } })