Skip to content

Commit 1f5df68

Browse files
authored
Merge pull request #622 from Quick/7.x-pr508
[7.x] Provide fallback messages to prevent crashes when main run loop is busy
2 parents e773081 + ffaed91 commit 1f5df68

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

Sources/Nimble/Matchers/Async.swift

+6-2
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,18 @@ private func async<T>(style: ExpectationStyle, predicate: Predicate<T>, timeout:
2323
}
2424
switch result {
2525
case .completed: return lastPredicateResult!
26-
case .timedOut: return PredicateResult(status: .fail, message: lastPredicateResult!.message)
26+
case .timedOut:
27+
let message = lastPredicateResult?.message ?? .fail("timed out before returning a value")
28+
return PredicateResult(status: .fail, message: message)
2729
case let .errorThrown(error):
2830
return PredicateResult(status: .fail, message: .fail("unexpected error thrown: <\(error)>"))
2931
case let .raisedException(exception):
3032
return PredicateResult(status: .fail, message: .fail("unexpected exception raised: \(exception)"))
3133
case .blockedRunLoop:
3234
// swiftlint:disable:next line_length
33-
return PredicateResult(status: .fail, message: lastPredicateResult!.message.appended(message: " (timed out, but main thread was unresponsive)."))
35+
let message = lastPredicateResult?.message.appended(message: " (timed out, but main run loop was unresponsive).") ??
36+
.fail("main run loop was unresponsive")
37+
return PredicateResult(status: .fail, message: message)
3438
case .incomplete:
3539
internalError("Reached .incomplete state for \(fnName)(...).")
3640
}

0 commit comments

Comments
 (0)