in remote-robot/src/main/kotlin/com/intellij/remoterobot/utils/RepeatUtils.kt [57:86]
fun <R> waitFor(
duration: Duration,
interval: Duration = Duration.ofSeconds(2),
description: String? = null,
errorMessage: String = "",
functionWithCondition: () -> Pair<Boolean, R>
): R {
var result: R? = null
if (description != null) {
return step("Waiting for $description") {
if (repeatInTime(duration, interval, isLogEnabled = true) {
val (condition, functionResult) = functionWithCondition()
result = functionResult
return@repeatInTime condition
}) {
return@step result!!
}
throw WaitForConditionTimeoutException(duration, errorMessage)
}
} else {
if (repeatInTime(duration, interval) {
val (condition, functionResult) = functionWithCondition()
result = functionResult
return@repeatInTime condition
}) {
return result!!
}
}
throw WaitForConditionTimeoutException(duration, errorMessage)
}