Skip to content

Commit 25d9b58

Browse files
test: Remove try! from tests (#6811)
Remove remaining try! and enable swiftlint rule. Fixes GH-4865
1 parent 5101817 commit 25d9b58

16 files changed

+88
-83
lines changed

SentryTestUtils/Sources/TestClient.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import Foundation
33
@_spi(Private) @testable import Sentry
44

55
public class TestClient: SentryClientInternal {
6+
67
public override init?(options: NSObject) {
78
super.init(
89
options: options,

Tests/.swiftlint.yml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ custom_rules:
1818

1919
disabled_rules:
2020
- force_cast
21-
- force_try
2221
- force_unwrapping
2322
- function_body_length
2423
- identifier_name

Tests/SentryTests/Integrations/Session/SentrySessionGeneratorTests.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ class SentrySessionGeneratorTests: NotificationCenterTestCase {
2121
private var options: Options!
2222
private var fileManager: SentryFileManager!
2323

24-
override func setUp() {
25-
super.setUp()
26-
24+
override func setUpWithError() throws {
25+
try super.setUpWithError()
26+
2727
options = Options()
2828
options.dsn = TestConstants.realDSN
2929

@@ -35,11 +35,11 @@ class SentrySessionGeneratorTests: NotificationCenterTestCase {
3535
// We want to start and stop the SentryAutoSessionTrackingIntegration ourselves so we can send crashed and abnormal sessions.
3636
options.enableAutoSessionTracking = false
3737

38-
fileManager = try! SentryFileManager(
38+
fileManager = try XCTUnwrap(SentryFileManager(
3939
options: options,
4040
dateProvider: TestCurrentDateProvider(),
4141
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
42-
)
42+
))
4343

4444
fileManager.deleteCurrentSession()
4545
fileManager.deleteCrashedSession()

Tests/SentryTests/Integrations/Session/SentrySessionTrackerTests.swift

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,17 @@ class SentrySessionTrackerTests: XCTestCase {
2323
}
2424
let notificationCenter = TestNSNotificationCenterWrapper()
2525
let dispatchQueue = TestSentryDispatchQueueWrapper()
26-
lazy var fileManager = try! SentryFileManager(options: options, dateProvider: currentDateProvider, dispatchQueueWrapper: dispatchQueue)
27-
28-
init() {
26+
let fileManager: SentryFileManager
27+
28+
init() throws {
2929
options = Options()
3030
options.dsn = SentrySessionTrackerTests.dsnAsString
3131
options.releaseName = "SentrySessionTrackerIntegrationTests"
3232
options.sessionTrackingIntervalMillis = 10_000
3333
options.environment = "debug"
34-
34+
35+
fileManager = try XCTUnwrap(SentryFileManager(options: options, dateProvider: currentDateProvider, dispatchQueueWrapper: dispatchQueue))
36+
3537
client = TestClient(options: options)
3638

3739
sentryCrash = TestSentryCrashWrapper(processInfoWrapper: ProcessInfo.processInfo)
@@ -69,10 +71,10 @@ class SentrySessionTrackerTests: XCTestCase {
6971
clearTestState()
7072
}
7173

72-
override func setUp() {
73-
super.setUp()
74-
75-
fixture = Fixture()
74+
override func setUpWithError() throws {
75+
try super.setUpWithError()
76+
77+
fixture = try Fixture()
7678

7779
SentryDependencyContainer.sharedInstance().dateProvider = fixture.currentDateProvider
7880

Tests/SentryTests/Integrations/SessionReplay/SentryVideoFrameProcessorTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -418,8 +418,8 @@ class SentryVideoFrameProcessorTests: XCTestCase {
418418
}
419419
}
420420

421-
func testFinishVideo_WhenSelfIsDeallocated_ShouldReturnNilVideoInfo() {
422-
let delayedVideoWriter = try! DelayedTestAVAssetWriter(url: fixture.outputFileURL, fileType: .mp4)
421+
func testFinishVideo_WhenSelfIsDeallocated_ShouldReturnNilVideoInfo() throws {
422+
let delayedVideoWriter = try XCTUnwrap(DelayedTestAVAssetWriter(url: fixture.outputFileURL, fileType: .mp4))
423423
delayedVideoWriter.statusOverride = .completed
424424
let videoWriterInput = TestAVAssetWriterInput(mediaType: .video, outputSettings: nil)
425425
delayedVideoWriter.add(videoWriterInput)

Tests/SentryTests/Integrations/UIEvents/SentryUIEventTrackerTests.swift

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ class SentryUIEventTrackerTests: XCTestCase {
126126

127127
callExecuteAction(action: action, target: fixture.target, sender: button, event: TestUIEvent())
128128

129-
let span = try! XCTUnwrap(SentrySDK.span as? SentryTracer)
129+
let span = try XCTUnwrap(SentrySDK.span as? SentryTracer)
130130
XCTAssertFalse(span.tags.contains {
131131
$0.key == "accessibilityIdentifier"
132132
})
@@ -150,7 +150,7 @@ class SentryUIEventTrackerTests: XCTestCase {
150150
try assertTransaction(name: "SentryTests.FirstViewController.\(expectedAction)", operation: operationClick)
151151
}
152152

153-
func test_OnGoingUILoadTransaction_StartNewUIEventTransaction_NotBoundToScope() {
153+
func test_OnGoingUILoadTransaction_StartNewUIEventTransaction_NotBoundToScope() throws {
154154
// Arrange
155155
let uiLoadTransaction = SentrySDK.startTransaction(name: "test", operation: "ui.load", bindToScope: true)
156156

@@ -159,10 +159,10 @@ class SentryUIEventTrackerTests: XCTestCase {
159159

160160
// Assert
161161
XCTAssertTrue(uiLoadTransaction === SentrySDK.span)
162-
XCTAssertEqual(getInternalTransactions().count, 0, "There shouldn't be an active ongoing UI event transaction.")
162+
XCTAssertEqual(try getInternalTransactions().count, 0, "There shouldn't be an active ongoing UI event transaction.")
163163
}
164164

165-
func test_ManualTransactionOnScope_StartNewUIEventTransaction_NotBoundToScope() {
165+
func test_ManualTransactionOnScope_StartNewUIEventTransaction_NotBoundToScope() throws {
166166
// Arrange
167167
let manualTransaction = SentrySDK.startTransaction(name: "test", operation: "my.operation", bindToScope: true)
168168

@@ -171,7 +171,7 @@ class SentryUIEventTrackerTests: XCTestCase {
171171

172172
// Assert
173173
XCTAssertTrue(manualTransaction === SentrySDK.span)
174-
XCTAssertEqual(getInternalTransactions().count, 0, "There shouldn't be an active ongoing UI event transaction.")
174+
XCTAssertEqual(try getInternalTransactions().count, 0, "There shouldn't be an active ongoing UI event transaction.")
175175
}
176176

177177
func test_SameUIElementWithSameEvent_ResetsTimeout() throws {
@@ -239,16 +239,18 @@ class SentryUIEventTrackerTests: XCTestCase {
239239

240240
callExecuteAction(action: "otherAction", target: fixture.target, sender: UIView(), event: TestUIEvent())
241241

242-
XCTAssertEqual(2, getInternalTransactions().count)
243-
242+
XCTAssertEqual(2, try getInternalTransactions().count)
243+
244244
let secondTransaction = try XCTUnwrap(SentrySDK.span as? SentryTracer)
245-
246-
XCTAssertTrue(secondTransaction === getInternalTransactions().last)
247-
245+
246+
let internalTransactions1 = try getInternalTransactions()
247+
XCTAssertTrue(secondTransaction === internalTransactions1.last)
248+
248249
child.finish()
249-
250-
XCTAssertEqual(1, getInternalTransactions().count)
251-
XCTAssertTrue(secondTransaction === getInternalTransactions().last)
250+
251+
let internalTransactions2 = try getInternalTransactions()
252+
XCTAssertEqual(1, internalTransactions2.count)
253+
XCTAssertTrue(secondTransaction === internalTransactions2.last)
252254
}
253255

254256
func test_Stop() {
@@ -273,8 +275,8 @@ class SentryUIEventTrackerTests: XCTestCase {
273275
fixture.swizzleWrapper.execute(action: action, target: target, sender: sender, event: event)
274276
}
275277

276-
private func getInternalTransactions() -> [SentryTracer] {
277-
return try! XCTUnwrap(Dynamic(self.fixture.uiEventTrackerMode).activeTransactions.asArray as? [SentryTracer])
278+
private func getInternalTransactions() throws -> [SentryTracer] {
279+
return try XCTUnwrap(Dynamic(self.fixture.uiEventTrackerMode).activeTransactions.asArray as? [SentryTracer])
278280
}
279281

280282
private func assertTransaction(name: String, operation: String, nameSource: SentryTransactionNameSource = .component) throws {
@@ -304,7 +306,7 @@ class SentryUIEventTrackerTests: XCTestCase {
304306
XCTAssertEqual(.ok, transaction.status)
305307
try assertTransaction(name: "SentryTests.FirstViewController.\(expectedAction)", operation: operation)
306308

307-
let transactions = getInternalTransactions()
309+
let transactions = try getInternalTransactions()
308310
XCTAssertEqual(1, transactions.count)
309311
}
310312

Tests/SentryTests/Integrations/WatchdogTerminations/SentryWatchdogTerminationTrackerTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class SentryWatchdogTerminationTrackerTests: NotificationCenterTestCase {
2828
options.dsn = SentryWatchdogTerminationTrackerTests.dsnAsString
2929
options.releaseName = TestData.appState.releaseName
3030

31-
fileManager = try! SentryFileManager(options: options, dateProvider: currentDate, dispatchQueueWrapper: dispatchQueue)
31+
fileManager = try XCTUnwrap(SentryFileManager(options: options, dateProvider: currentDate, dispatchQueueWrapper: dispatchQueue))
3232

3333
breadcrumbProcessor = SentryWatchdogTerminationBreadcrumbProcessor(maxBreadcrumbs: Int(options.maxBreadcrumbs), fileManager: fileManager)
3434
let backgroundQueueWrapper = TestSentryDispatchQueueWrapper()
@@ -412,7 +412,7 @@ class SentryWatchdogTerminationTrackerTests: NotificationCenterTestCase {
412412
}
413413

414414
func testStop_StopsObserving_NoMoreFileManagerInvocations() throws {
415-
let fileManager = try! TestFileManager(options: Options(), dateProvider: fixture.currentDate, dispatchQueueWrapper: fixture.dispatchQueue)
415+
let fileManager = try XCTUnwrap(TestFileManager(options: Options(), dateProvider: fixture.currentDate, dispatchQueueWrapper: fixture.dispatchQueue))
416416
sut = try fixture.getSut(fileManager: fileManager)
417417

418418
sut.start()

Tests/SentryTests/Networking/SentryHttpTransportTests.swift

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -59,17 +59,17 @@ class SentryHttpTransportTests: XCTestCase {
5959
eventEnvelope = SentryEnvelope(id: event.eventId, items: [SentryEnvelopeItem(event: event), attachmentEnvelopeItem])
6060
// We are comparing byte data and the `sentAt` header is also set in the transport, so we also need them here in the expected envelope.
6161
eventEnvelope.header.sentAt = currentDateProvider.date()
62-
eventWithAttachmentRequest = buildRequest(eventEnvelope)
63-
62+
eventWithAttachmentRequest = try buildRequest(eventEnvelope)
63+
6464
session = SentrySession(releaseName: "2.0.1", distinctId: "some-id")
6565
sessionEnvelope = SentryEnvelope(id: nil, singleItem: SentryEnvelopeItem(session: session))
6666
sessionEnvelope.header.sentAt = currentDateProvider.date()
67-
sessionRequest = buildRequest(sessionEnvelope)
67+
sessionRequest = try buildRequest(sessionEnvelope)
6868

6969
let items = [SentryEnvelopeItem(event: event), SentryEnvelopeItem(session: session)]
7070
eventWithSessionEnvelope = SentryEnvelope(id: event.eventId, items: items)
7171
eventWithSessionEnvelope.header.sentAt = currentDateProvider.date()
72-
eventWithSessionRequest = buildRequest(eventWithSessionEnvelope)
72+
eventWithSessionRequest = try buildRequest(eventWithSessionEnvelope)
7373

7474
options = Options()
7575
options.dsn = SentryHttpTransportTests.dsnAsString
@@ -97,7 +97,7 @@ class SentryHttpTransportTests: XCTestCase {
9797
]
9898
clientReportEnvelope = SentryEnvelope(id: event.eventId, items: clientReportEnvelopeItems)
9999
clientReportEnvelope.header.sentAt = currentDateProvider.date()
100-
clientReportRequest = buildRequest(clientReportEnvelope)
100+
clientReportRequest = try buildRequest(clientReportEnvelope)
101101
}
102102

103103
func getTransactionEnvelope() -> SentryEnvelope {
@@ -148,9 +148,9 @@ class SentryHttpTransportTests: XCTestCase {
148148
try TestConstants.dsn(username: "SentryHttpTransportTests")
149149
}
150150

151-
private class func buildRequest(_ envelope: SentryEnvelope) -> URLRequest {
152-
let envelopeData = try! XCTUnwrap(SentrySerializationSwift.data(with: envelope))
153-
return try! SentryURLRequestFactory.envelopeRequest(with: dsn(), data: envelopeData)
151+
private class func buildRequest(_ envelope: SentryEnvelope) throws -> URLRequest {
152+
let envelopeData = try XCTUnwrap(SentrySerializationSwift.data(with: envelope))
153+
return try SentryURLRequestFactory.envelopeRequest(with: dsn(), data: envelopeData)
154154
}
155155

156156
private var fixture: Fixture!
@@ -241,7 +241,7 @@ class SentryHttpTransportTests: XCTestCase {
241241
]
242242
let envelope = SentryEnvelope(id: fixture.event.eventId, items: envelopeItems)
243243
envelope.header.sentAt = fixture.currentDateProvider.date()
244-
let request = SentryHttpTransportTests.buildRequest(envelope)
244+
let request = try SentryHttpTransportTests.buildRequest(envelope)
245245

246246
let actualData = try XCTUnwrap(request.httpBody)
247247
let expectedData = try XCTUnwrap(fixture.requestManager.requests.last?.httpBody)
@@ -470,7 +470,7 @@ class SentryHttpTransportTests: XCTestCase {
470470
let sessionEnvelope = SentryEnvelope(id: fixture.event.eventId, singleItem: SentryEnvelopeItem(session: fixture.session))
471471
sessionEnvelope.header.sentAt = fixture.currentDateProvider.date()
472472
let sessionData = try XCTUnwrap(SentrySerializationSwift.data(with: sessionEnvelope))
473-
let sessionRequest = try! SentryURLRequestFactory.envelopeRequest(with: SentryHttpTransportTests.dsn(), data: sessionData)
473+
let sessionRequest = try XCTUnwrap(SentryURLRequestFactory.envelopeRequest(with: SentryHttpTransportTests.dsn(), data: sessionData))
474474

475475
if fixture.requestManager.requests.invocations.count > 3 {
476476
let unzippedBody = try XCTUnwrap(sentry_unzippedData(XCTUnwrap(sessionRequest.httpBody)))
@@ -564,8 +564,8 @@ class SentryHttpTransportTests: XCTestCase {
564564
]
565565
let clientReportEnvelope = SentryEnvelope(id: fixture.event.eventId, items: clientReportEnvelopeItems)
566566
clientReportEnvelope.header.sentAt = fixture.currentDateProvider.date()
567-
let clientReportRequest = SentryHttpTransportTests.buildRequest(clientReportEnvelope)
568-
567+
let clientReportRequest = try SentryHttpTransportTests.buildRequest(clientReportEnvelope)
568+
569569
givenRateLimitResponse(forCategory: "error")
570570
sendEvent()
571571
sendEvent()
@@ -592,8 +592,8 @@ class SentryHttpTransportTests: XCTestCase {
592592

593593
let clientReportEnvelope = SentryEnvelope(id: transactionEnvelope.header.eventId, items: clientReportEnvelopeItems)
594594
clientReportEnvelope.header.sentAt = fixture.currentDateProvider.date()
595-
let clientReportRequest = SentryHttpTransportTests.buildRequest(clientReportEnvelope)
596-
595+
let clientReportRequest = try SentryHttpTransportTests.buildRequest(clientReportEnvelope)
596+
597597
givenRateLimitResponse(forCategory: "transaction")
598598

599599
sut.send(envelope: transactionEnvelope)

Tests/SentryTests/Networking/SentryTransportFactoryTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ class SentryTransportFactoryTests: XCTestCase {
1919
options.dsn = SentryTransportFactoryTests.dsnAsString
2020
options.urlSessionDelegate = urlSessionDelegateSpy
2121

22-
let fileManager = try! SentryFileManager(
22+
let fileManager = try XCTUnwrap(SentryFileManager(
2323
options: options,
2424
dateProvider: dateProvider,
2525
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
26-
)
26+
))
2727

2828
// -- Act --
2929
let transports = TransportInitializer.initTransports(
@@ -59,11 +59,11 @@ class SentryTransportFactoryTests: XCTestCase {
5959
options.dsn = SentryTransportFactoryTests.dsnAsString
6060
options.urlSession = sessionConfiguration
6161

62-
let fileManager = try! SentryFileManager(
62+
let fileManager = try XCTUnwrap(SentryFileManager(
6363
options: options,
6464
dateProvider: dateProvider,
6565
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
66-
)
66+
))
6767

6868
// -- Act --
6969
let transports = TransportInitializer.initTransports(

Tests/SentryTests/Networking/SentryTransportInitializerTests.swift

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,16 @@ class SentryTransportInitializerTests: XCTestCase {
1010
private var dateProvider: TestCurrentDateProvider!
1111
private var rateLimits: (any RateLimits)!
1212

13-
override func setUp() {
14-
super.setUp()
13+
override func setUpWithError() throws {
14+
try super.setUpWithError()
15+
1516
let options = Options()
1617
options.dsn = SentryTransportInitializerTests.dsnAsString
17-
fileManager = try! SentryFileManager(
18+
fileManager = try XCTUnwrap(SentryFileManager(
1819
options: options,
1920
dateProvider: TestCurrentDateProvider(),
2021
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
21-
)
22+
))
2223
dateProvider = TestCurrentDateProvider()
2324
rateLimits = SentryDependencyContainer.sharedInstance().rateLimits
2425
}

0 commit comments

Comments
 (0)