diff --git a/supacode/Features/DiffView/DiffWindowState.swift b/supacode/Features/DiffView/DiffWindowState.swift index bcf6276a..56ba00e8 100644 --- a/supacode/Features/DiffView/DiffWindowState.swift +++ b/supacode/Features/DiffView/DiffWindowState.swift @@ -330,7 +330,10 @@ final class DiffWindowState { addNextLoad() } for await (id, doc) in group { - guard !Task.isCancelled else { break } + guard !Task.isCancelled else { + group.cancelAll() + break + } documentCache[id] = doc if selectedFile?.id == id { updateDiffDocument(doc) diff --git a/supacodeTests/DiffWindowStateTests.swift b/supacodeTests/DiffWindowStateTests.swift index bfb6b5a6..90de4d09 100644 --- a/supacodeTests/DiffWindowStateTests.swift +++ b/supacodeTests/DiffWindowStateTests.swift @@ -629,6 +629,7 @@ private func outgoingBase(displayName: String) -> OutgoingBaseResolution { ) } +@MainActor private func waitForDiffWindowState( _ condition: @MainActor @escaping () -> Bool, maxIterations: Int = 500 @@ -639,4 +640,5 @@ private func waitForDiffWindowState( } await Task.yield() } + Issue.record("Timed out waiting for the DiffWindowState condition after \(maxIterations) iterations") }