Files
openclaw/apps/shared/OpenClawKit/Tests/OpenClawKitTests/TestAsyncHelpers.swift
2026-03-02 09:55:46 +00:00

23 lines
609 B
Swift

import Foundation
struct AsyncWaitTimeoutError: Error, CustomStringConvertible {
let label: String
var description: String { "Timeout waiting for: \(self.label)" }
}
func waitUntil(
_ label: String,
timeoutSeconds: Double = 3.0,
pollMs: UInt64 = 10,
_ condition: @escaping @Sendable () async -> Bool) async throws
{
let deadline = Date().addingTimeInterval(timeoutSeconds)
while Date() < deadline {
if await condition() {
return
}
try await Task.sleep(nanoseconds: pollMs * 1_000_000)
}
throw AsyncWaitTimeoutError(label: label)
}