diff --git a/src/main/ipc/filesystem/filesystem-git-at-risk-local-files-handlers.test.ts b/src/main/ipc/filesystem/filesystem-git-at-risk-local-files-handlers.test.ts index efebb428d7c..ef107966f07 100644 --- a/src/main/ipc/filesystem/filesystem-git-at-risk-local-files-handlers.test.ts +++ b/src/main/ipc/filesystem/filesystem-git-at-risk-local-files-handlers.test.ts @@ -90,20 +90,37 @@ describe('git:atRiskLocalFiles cancellation', () => { it('does not let another window cancel the scan', async () => { let scanSignal: AbortSignal | undefined - readAtRiskMock.mockImplementation((args: { gitOptions?: { signal?: AbortSignal } }) => { - scanSignal = args.gitOptions?.signal - return Promise.resolve({ count: 0, samplePaths: [], complete: true }) + let startScan!: () => void + const scanStarted = new Promise((resolve) => { + startScan = resolve }) + readAtRiskMock.mockImplementation( + (args: { gitOptions?: { signal?: AbortSignal } }) => + new Promise((_resolve, reject) => { + scanSignal = args.gitOptions?.signal + scanSignal?.addEventListener('abort', () => reject(new Error('aborted')), { once: true }) + startScan() + }) + ) + const owner = requestEvent(1) - void invoke('git:atRiskLocalFiles', requestEvent(1), { + const scan = invoke('git:atRiskLocalFiles', owner, { worktreePath: '/repo-feature', requestToken: 'at-risk-1' }) - await vi.waitFor(() => expect(readAtRiskMock).toHaveBeenCalled()) + const cancelled = expect(scan).rejects.toThrow('aborted') + await scanStarted await invoke('git:cancelAtRiskLocalFiles', requestEvent(2), { requestToken: 'at-risk-1' }) - expect(scanSignal?.aborted).toBe(false) + const abortedByOtherWindow = scanSignal?.aborted + await invoke('git:cancelAtRiskLocalFiles', owner, { + requestToken: 'at-risk-1' + }) + + expect(scanSignal?.aborted).toBe(true) + await cancelled + expect(abortedByOtherWindow).toBe(false) }) }) diff --git a/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.test.ts b/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.test.ts index 71a89c988a2..b3580dd18e0 100644 --- a/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.test.ts +++ b/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.test.ts @@ -80,12 +80,5 @@ describe('web git atRiskLocalFiles', () => { await expect(scan).rejects.toBeInstanceOf(RuntimeRpcCallError) await expect(scan).rejects.toMatchObject({ code: 'method_not_found' }) - expect(abortableCallMock).toHaveBeenCalledWith( - 'env-1', - 'git.atRiskLocalFiles', - { worktree: expect.anything() }, - undefined, - expect.any(AbortSignal) - ) }) }) diff --git a/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.ts b/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.ts index 12170b19701..88d9bda3639 100644 --- a/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.ts +++ b/src/renderer/src/web/preload-api/web-git-at-risk-local-files-api.ts @@ -30,7 +30,7 @@ async function callAbortableAtRiskLocalFiles( environment.id, 'git.atRiskLocalFiles', { worktree: toRuntimeWorktreeSelector(worktree.id) }, - undefined, + 30_000, controller.signal ) updateEnvironmentFromResponse(environment, response)