Skip to content

Commit 765ab9c

Browse files
authored
Merge pull request #577 from Quick/refactor-matcherror-matcher
[7.x] Refactor `matchError` matcher using `Predicate.define`
2 parents 0c4ebf1 + 82afa72 commit 765ab9c

File tree

1 file changed

+32
-14
lines changed

1 file changed

+32
-14
lines changed

Sources/Nimble/Matchers/MatchError.swift

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,24 @@ import Foundation
66
/// Errors are tried to be compared by their implementation of Equatable,
77
/// otherwise they fallback to comparison by _domain and _code.
88
public func matchError<T: Error>(_ error: T) -> Predicate<Error> {
9-
return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in
10-
let actualError: Error? = try actualExpression.evaluate()
9+
return Predicate.define { actualExpression in
10+
let actualError = try actualExpression.evaluate()
11+
12+
let failureMessage = FailureMessage()
13+
setFailureMessageForError(
14+
failureMessage,
15+
postfixMessageVerb: "match",
16+
actualError: actualError,
17+
error: error
18+
)
1119

12-
setFailureMessageForError(failureMessage, postfixMessageVerb: "match", actualError: actualError, error: error)
1320
var matches = false
1421
if let actualError = actualError, errorMatchesExpectedError(actualError, expectedError: error) {
1522
matches = true
1623
}
17-
return matches
18-
}.requireNonNil
24+
25+
return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage())
26+
}
1927
}
2028

2129
/// A Nimble matcher that succeeds when the actual expression evaluates to an
@@ -24,35 +32,45 @@ public func matchError<T: Error>(_ error: T) -> Predicate<Error> {
2432
/// Errors are tried to be compared by their implementation of Equatable,
2533
/// otherwise they fallback to comparision by _domain and _code.
2634
public func matchError<T: Error & Equatable>(_ error: T) -> Predicate<Error> {
27-
return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in
28-
let actualError: Error? = try actualExpression.evaluate()
35+
return Predicate.define { actualExpression in
36+
let actualError = try actualExpression.evaluate()
2937

30-
setFailureMessageForError(failureMessage, postfixMessageVerb: "match", actualError: actualError, error: error)
38+
let failureMessage = FailureMessage()
39+
setFailureMessageForError(
40+
failureMessage,
41+
postfixMessageVerb: "match",
42+
actualError: actualError,
43+
error: error
44+
)
3145

3246
var matches = false
3347
if let actualError = actualError as? T, error == actualError {
3448
matches = true
3549
}
36-
return matches
37-
}.requireNonNil
50+
51+
return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage())
52+
}
3853
}
3954

4055
/// A Nimble matcher that succeeds when the actual expression evaluates to an
4156
/// error of the specified type
4257
public func matchError<T: Error>(_ errorType: T.Type) -> Predicate<Error> {
43-
return Predicate.fromDeprecatedClosure { actualExpression, failureMessage in
44-
let actualError: Error? = try actualExpression.evaluate()
58+
return Predicate.define { actualExpression in
59+
let actualError = try actualExpression.evaluate()
4560

61+
let failureMessage = FailureMessage()
4662
setFailureMessageForError(
4763
failureMessage,
4864
postfixMessageVerb: "match",
4965
actualError: actualError,
5066
errorType: errorType
5167
)
68+
5269
var matches = false
5370
if actualError as? T != nil {
5471
matches = true
5572
}
56-
return matches
57-
}.requireNonNil
73+
74+
return PredicateResult(bool: matches, message: failureMessage.toExpectationMessage())
75+
}
5876
}

0 commit comments

Comments
 (0)