diff --git a/Sources/ConsoleKit/Activity/ActivityIndicator.swift b/Sources/ConsoleKit/Activity/ActivityIndicator.swift index 052d644..0d7f788 100644 --- a/Sources/ConsoleKit/Activity/ActivityIndicator.swift +++ b/Sources/ConsoleKit/Activity/ActivityIndicator.swift @@ -62,7 +62,7 @@ public final class ActivityIndicator: Sendable where A: ActivityIndicatorType let timer = AsyncTimerSequence( interval: .milliseconds(refreshRate), tolerance: .milliseconds(10), - clock: .continuous + clock: .suspending ) var tick: UInt = 0 diff --git a/Tests/ConsoleKitTests/ActivityTests.swift b/Tests/ConsoleKitTests/ActivityTests.swift index a29de6d..e35f36f 100644 --- a/Tests/ConsoleKitTests/ActivityTests.swift +++ b/Tests/ConsoleKitTests/ActivityTests.swift @@ -73,6 +73,23 @@ struct ActivityTests { } } + @Test("Task Cancellation") + func taskCancellation() async throws { + let console = Terminal() + let indicator = console.loadingBar(title: "Loading") + + let task = Task { + try await indicator.withActivityIndicator { + try await Task.sleep(for: .seconds(5)) + } + } + + try await Task.sleep(for: .seconds(1)) + task.cancel() + + await #expect(throws: CancellationError.self) { try await task.value } + } + @Test("Activity Width Key") func activityWidthKey() { var dict = [AnySendableHashable: String]()