Skip to content

Commit e04ac7a

Browse files
authored
Merge pull request #582 from Quick/swiftlint-force_try
[SwiftLint] Remove force_try from disabled_rules
2 parents d7471bb + c5b7a71 commit e04ac7a

File tree

8 files changed

+53
-12
lines changed

8 files changed

+53
-12
lines changed

.swiftlint.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
disabled_rules:
22
- todo
3-
- force_try
43

54
included:
65
- Sources

Sources/Nimble/Adapters/AssertionRecorder.swift

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,21 +37,48 @@ public class AssertionRecorder: AssertionHandler {
3737
}
3838
}
3939

40+
extension NMBExceptionCapture {
41+
internal func tryBlockThrows(_ unsafeBlock: () throws -> Void) throws {
42+
var catchedError: Error?
43+
tryBlock {
44+
do {
45+
try unsafeBlock()
46+
} catch {
47+
catchedError = error
48+
}
49+
}
50+
if let error = catchedError {
51+
throw error
52+
}
53+
}
54+
}
55+
4056
/// Allows you to temporarily replace the current Nimble assertion handler with
4157
/// the one provided for the scope of the closure.
4258
///
4359
/// Once the closure finishes, then the original Nimble assertion handler is restored.
4460
///
4561
/// @see AssertionHandler
46-
public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler, closure: () throws -> Void) {
62+
public func withAssertionHandler(_ tempAssertionHandler: AssertionHandler,
63+
file: FileString = #file,
64+
line: UInt = #line,
65+
closure: () throws -> Void) {
4766
let environment = NimbleEnvironment.activeInstance
4867
let oldRecorder = environment.assertionHandler
4968
let capturer = NMBExceptionCapture(handler: nil, finally: ({
5069
environment.assertionHandler = oldRecorder
5170
}))
5271
environment.assertionHandler = tempAssertionHandler
53-
capturer.tryBlock {
54-
try! closure()
72+
73+
do {
74+
try capturer.tryBlockThrows {
75+
try closure()
76+
}
77+
} catch {
78+
let failureMessage = FailureMessage()
79+
failureMessage.stringValue = "unexpected error thrown: <\(error)>"
80+
let location = SourceLocation(file: file, line: line)
81+
tempAssertionHandler.assert(false, message: failureMessage, location: location)
5582
}
5683
}
5784

Sources/Nimble/Adapters/NMBExpectation.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,15 @@ internal struct ObjCMatcherWrapper: Matcher {
1515

1616
func matches(_ actualExpression: Expression<NSObject>, failureMessage: FailureMessage) -> Bool {
1717
return matcher.matches(
18+
// swiftlint:disable:next force_try
1819
({ try! actualExpression.evaluate() }),
1920
failureMessage: failureMessage,
2021
location: actualExpression.location)
2122
}
2223

2324
func doesNotMatch(_ actualExpression: Expression<NSObject>, failureMessage: FailureMessage) -> Bool {
2425
return matcher.doesNotMatch(
26+
// swiftlint:disable:next force_try
2527
({ try! actualExpression.evaluate() }),
2628
failureMessage: failureMessage,
2729
location: actualExpression.location)

Sources/Nimble/Matchers/AllPass.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ extension NMBObjCMatcher {
103103
} else {
104104
let failureMessage = FailureMessage()
105105
let result = matcher.matches(
106+
// swiftlint:disable:next force_try
106107
({ try! expr.evaluate() }),
107108
failureMessage: failureMessage,
108109
location: expr.location

Sources/Nimble/Matchers/RaisesException.swift

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,13 @@ public func raiseException(
2424
exception = e
2525
}), finally: nil)
2626

27-
capture.tryBlock {
28-
_ = try! actualExpression.evaluate()
29-
return
27+
do {
28+
try capture.tryBlockThrows {
29+
_ = try actualExpression.evaluate()
30+
}
31+
} catch {
32+
failureMessage.stringValue = "unexpected error thrown: <\(error)>"
33+
return false
3034
}
3135

3236
setFailureMessageForException(

Sources/Nimble/Matchers/SatisfyAllOf.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,12 @@ extension NMBObjCMatcher {
6060
return predicate.satisfies({ try expression.evaluate() }, location: actualExpression.location).toSwift()
6161
} else {
6262
let failureMessage = FailureMessage()
63-
// swiftlint:disable:next line_length
64-
let success = matcher.matches({ try! expression.evaluate() }, failureMessage: failureMessage, location: actualExpression.location)
63+
let success = matcher.matches(
64+
// swiftlint:disable:next force_try
65+
{ try! expression.evaluate() },
66+
failureMessage: failureMessage,
67+
location: actualExpression.location
68+
)
6569
return PredicateResult(bool: success, message: failureMessage.toExpectationMessage())
6670
}
6771
}

Sources/Nimble/Matchers/SatisfyAnyOf.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,12 @@ extension NMBObjCMatcher {
6868
return predicate.satisfies({ try expression.evaluate() }, location: actualExpression.location).toSwift()
6969
} else {
7070
let failureMessage = FailureMessage()
71-
// swiftlint:disable:next line_length
72-
let success = matcher.matches({ try! expression.evaluate() }, failureMessage: failureMessage, location: actualExpression.location)
71+
let success = matcher.matches(
72+
// swiftlint:disable:next force_try
73+
{ try! expression.evaluate() },
74+
failureMessage: failureMessage,
75+
location: actualExpression.location
76+
)
7377
return PredicateResult(bool: success, message: failureMessage.toExpectationMessage())
7478
}
7579
}

Tests/NimbleTests/Helpers/utils.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ func failsWithErrorMessage(_ messages: [String], file: FileString = #file, line:
88
var lineNumber = line
99

1010
let recorder = AssertionRecorder()
11-
withAssertionHandler(recorder, closure: closure)
11+
withAssertionHandler(recorder, file: file, line: line, closure: closure)
1212

1313
for msg in messages {
1414
var lastFailure: AssertionRecord?

0 commit comments

Comments
 (0)