Skip to content

Commit 22df6f3

Browse files
committed
ref: Refactor SentryClient init
1 parent 86eb6d5 commit 22df6f3

File tree

14 files changed

+56
-96
lines changed

14 files changed

+56
-96
lines changed

Sentry.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1037,6 +1037,7 @@
10371037
FA1841832E4B457F005DEDC7 /* SentryApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA18417D2E4B457B005DEDC7 /* SentryApplication.swift */; };
10381038
FA21A2EF2E60E9CB00E7EADB /* EnvelopeComparison.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA21A2E92E60E9C700E7EADB /* EnvelopeComparison.swift */; };
10391039
FA21F0B42E4A2A80008B4E5A /* SentryAppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4C32972DF7513F001D7B01 /* SentryAppState.swift */; };
1040+
FA27EBF52EB82FAD00F2ECF7 /* FileIOTrackerTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA27EBEF2EB82FA800F2ECF7 /* FileIOTrackerTestHelpers.swift */; };
10401041
FA34C1A32E692A5000BC52AA /* SentryEnvelopeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA34C1A22E692A5000BC52AA /* SentryEnvelopeItem.swift */; };
10411042
FA3734842E0F086C0091EF24 /* SentryDependencyContainerSwiftHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3734832E0F07A20091EF24 /* SentryDependencyContainerSwiftHelper.h */; };
10421043
FA3734862E0F09320091EF24 /* SentryDependencyContainerSwiftHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = FA3734852E0F092F0091EF24 /* SentryDependencyContainerSwiftHelper.m */; };
@@ -2415,6 +2416,7 @@
24152416
FA034AC72DD3DB4900FE3107 /* SentryIntegrationProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryIntegrationProtocol.h; path = Public/SentryIntegrationProtocol.h; sourceTree = "<group>"; };
24162417
FA18417D2E4B457B005DEDC7 /* SentryApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryApplication.swift; sourceTree = "<group>"; };
24172418
FA21A2E92E60E9C700E7EADB /* EnvelopeComparison.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvelopeComparison.swift; sourceTree = "<group>"; };
2419+
FA27EBEF2EB82FA800F2ECF7 /* FileIOTrackerTestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileIOTrackerTestHelpers.swift; sourceTree = "<group>"; };
24182420
FA34C1A22E692A5000BC52AA /* SentryEnvelopeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryEnvelopeItem.swift; sourceTree = "<group>"; };
24192421
FA3734832E0F07A20091EF24 /* SentryDependencyContainerSwiftHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryDependencyContainerSwiftHelper.h; path = include/SentryDependencyContainerSwiftHelper.h; sourceTree = "<group>"; };
24202422
FA3734852E0F092F0091EF24 /* SentryDependencyContainerSwiftHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryDependencyContainerSwiftHelper.m; sourceTree = "<group>"; };
@@ -4621,6 +4623,7 @@
46214623
D8CE69BB277E39C700C6EC5C /* SentryFileIOTrackingIntegrationObjCTests.m */,
46224624
D885266327739D01001269FC /* SentryFileIOTrackingIntegrationTests.swift */,
46234625
7B82722A27A3220A00F4BFF4 /* SentryFileIoTrackingUnitTests.swift */,
4626+
FA27EBEF2EB82FA800F2ECF7 /* FileIOTrackerTestHelpers.swift */,
46244627
D4AF00242D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m */,
46254628
);
46264629
path = IO;
@@ -6163,6 +6166,7 @@
61636166
7B5B94352657AD21002E474B /* SentryFramesTrackingIntegrationTests.swift in Sources */,
61646167
D43A2A142DD4816500114724 /* SentryWeakMapTests.swift in Sources */,
61656168
8431EE5B29ADB8EA00D8DC56 /* SentryTimeTests.m in Sources */,
6169+
FA27EBF52EB82FAD00F2ECF7 /* FileIOTrackerTestHelpers.swift in Sources */,
61666170
7B0A54562523178700A71716 /* SentryScopeSwiftTests.swift in Sources */,
61676171
7B5B94332657A816002E474B /* SentryAppStartTrackingIntegrationTests.swift in Sources */,
61686172
62278CA82E30B21A0022ABC6 /* SentryHttpTransportFlushIntegrationTests.swift in Sources */,

SentryTestUtils/TestClient.swift

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,32 +6,27 @@ public class TestClient: SentryClient {
66
public override init?(options: Options) {
77
super.init(
88
options: options,
9+
transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options),
910
fileManager: try! TestFileManager(
1011
options: options,
1112
dateProvider: TestCurrentDateProvider(),
1213
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
1314
),
14-
deleteOldEnvelopeItems: false,
15-
transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options)
15+
threadInspector: SentryDefaultThreadInspector(options: options),
16+
debugImageProvider: SentryDependencyContainer.sharedInstance().debugImageProvider,
17+
random: SentryDependencyContainer.sharedInstance().random,
18+
locale: NSLocale.autoupdatingCurrent,
19+
timezone: NSCalendar.autoupdatingCurrent.timeZone
1620
)
1721
}
18-
19-
@_spi(Private) public override init?(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool) {
20-
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options))
21-
}
22-
23-
@_spi(Private) public override init(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, transportAdapter: SentryTransportAdapter) {
24-
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: transportAdapter)
25-
}
2622

2723
// Without this override we get a fatal error: use of unimplemented initializer
2824
// see https://stackoverflow.com/questions/28187261/ios-swift-fatal-error-use-of-unimplemented-initializer-init
29-
@_spi(Private) public override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, threadInspector: SentryDefaultThreadInspector, debugImageProvider: SentryDebugImageProvider, random: SentryRandomProtocol, locale: Locale, timezone: TimeZone) {
25+
@_spi(Private) public override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, threadInspector: SentryDefaultThreadInspector, debugImageProvider: SentryDebugImageProvider, random: SentryRandomProtocol, locale: Locale, timezone: TimeZone) {
3026
super.init(
3127
options: options,
3228
transportAdapter: transportAdapter,
3329
fileManager: fileManager,
34-
deleteOldEnvelopeItems: false,
3530
threadInspector: threadInspector,
3631
debugImageProvider: debugImageProvider,
3732
random: random,

Sources/Sentry/SentryClient.m

Lines changed: 6 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -61,37 +61,18 @@ @interface SentryClient ()
6161
@implementation SentryClient
6262

6363
- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
64-
{
65-
return [self initWithOptions:options
66-
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
67-
dispatchQueue:SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
68-
deleteOldEnvelopeItems:YES];
69-
}
70-
71-
- (nullable instancetype)initWithOptions:(SentryOptions *)options
72-
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
73-
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
74-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
7564
{
7665
NSError *error;
77-
SentryFileManager *fileManager = [[SentryFileManager alloc] initWithOptions:options
78-
dateProvider:dateProvider
79-
dispatchQueueWrapper:dispatchQueue
80-
error:&error];
66+
SentryFileManager *fileManager = [[SentryFileManager alloc]
67+
initWithOptions:options
68+
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
69+
dispatchQueueWrapper:SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
70+
error:&error];
8171
if (error != nil) {
8272
SENTRY_LOG_FATAL(@"Failed to initialize file system: %@", error.localizedDescription);
8373
return nil;
8474
}
85-
return [self initWithOptions:options
86-
fileManager:fileManager
87-
deleteOldEnvelopeItems:deleteOldEnvelopeItems];
88-
}
8975

90-
/** Internal constructor for testing purposes. */
91-
- (instancetype)initWithOptions:(SentryOptions *)options
92-
fileManager:(SentryFileManager *)fileManager
93-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
94-
{
9576
NSArray<id<SentryTransport>> *transports =
9677
[SentryTransportFactory initTransports:options
9778
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
@@ -101,26 +82,12 @@ - (instancetype)initWithOptions:(SentryOptions *)options
10182
SentryTransportAdapter *transportAdapter =
10283
[[SentryTransportAdapter alloc] initWithTransports:transports options:options];
10384

104-
return [self initWithOptions:options
105-
fileManager:fileManager
106-
deleteOldEnvelopeItems:deleteOldEnvelopeItems
107-
transportAdapter:transportAdapter];
108-
}
109-
110-
/** Internal constructor for testing purposes. */
111-
- (instancetype)initWithOptions:(SentryOptions *)options
112-
fileManager:(SentryFileManager *)fileManager
113-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
114-
transportAdapter:(SentryTransportAdapter *)transportAdapter
115-
116-
{
11785
SentryDefaultThreadInspector *threadInspector =
11886
[[SentryDefaultThreadInspector alloc] initWithOptions:options];
11987

12088
return [self initWithOptions:options
12189
transportAdapter:transportAdapter
12290
fileManager:fileManager
123-
deleteOldEnvelopeItems:deleteOldEnvelopeItems
12491
threadInspector:threadInspector
12592
debugImageProvider:[SentryDependencyContainer sharedInstance].debugImageProvider
12693
random:[SentryDependencyContainer sharedInstance].random
@@ -131,7 +98,6 @@ - (instancetype)initWithOptions:(SentryOptions *)options
13198
- (instancetype)initWithOptions:(SentryOptions *)options
13299
transportAdapter:(SentryTransportAdapter *)transportAdapter
133100
fileManager:(SentryFileManager *)fileManager
134-
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
135101
threadInspector:(SentryDefaultThreadInspector *)threadInspector
136102
debugImageProvider:(SentryDebugImageProvider *)debugImageProvider
137103
random:(id<SentryRandomProtocol>)random
@@ -154,9 +120,7 @@ - (instancetype)initWithOptions:(SentryOptions *)options
154120
// executing this on the main thread, we cache the installationID async here.
155121
[SentryInstallation cacheIDAsyncWithCacheDirectoryPath:options.cacheDirectoryPath];
156122

157-
if (deleteOldEnvelopeItems) {
158-
[fileManager deleteOldEnvelopeItems];
159-
}
123+
[fileManager deleteOldEnvelopeItems];
160124
}
161125
return self;
162126
}

Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
@_implementationOnly import _SentryPrivate
22
import Foundation
33

4-
@objcMembers @_spi(Private) public class SentryEnabledFeaturesBuilder: NSObject {
4+
final class SentryEnabledFeaturesBuilder: NSObject {
55

66
// swiftlint:disable cyclomatic_complexity function_body_length
7-
public static func getEnabledFeatures(options: Options?) -> [String] {
7+
static func getEnabledFeatures(options: Options?) -> [String] {
88
guard let options = options else {
99
return []
1010
}

Sources/Swift/SentryCrash/SentryThreadInspector.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
internalHelper = SentryDefaultThreadInspector(options: SentrySDKInternal.options)
88
}
99

10-
@objc public init(options: Options) {
10+
init(options: Options) {
1111
internalHelper = SentryDefaultThreadInspector(options: options)
1212
}
1313

Tests/SentryTests/Integrations/Feedback/SentryFeedbackTests.swift

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,6 @@ class SentryFeedbackTests: XCTestCase {
207207
dateProvider: TestCurrentDateProvider(),
208208
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
209209
)),
210-
deleteOldEnvelopeItems: false,
211210
threadInspector: TestDefaultThreadInspector.instance,
212211
debugImageProvider: TestDebugImageProvider(),
213212
random: TestRandom(value: 1.0),
@@ -250,7 +249,6 @@ class SentryFeedbackTests: XCTestCase {
250249
dateProvider: TestCurrentDateProvider(),
251250
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
252251
)),
253-
deleteOldEnvelopeItems: false,
254252
threadInspector: TestDefaultThreadInspector.instance,
255253
debugImageProvider: TestDebugImageProvider(),
256254
random: TestRandom(value: 1.0),
@@ -293,7 +291,6 @@ class SentryFeedbackTests: XCTestCase {
293291
dateProvider: TestCurrentDateProvider(),
294292
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
295293
)),
296-
deleteOldEnvelopeItems: false,
297294
threadInspector: TestDefaultThreadInspector.instance,
298295
debugImageProvider: TestDebugImageProvider(),
299296
random: TestRandom(value: 1.0),
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
@_spi(Private) @testable import Sentry
2+
3+
@objc public class FileIOTrackerTestHelpers: NSObject {
4+
@objc static func makeTracker(options: Options) -> SentryFileIOTracker {
5+
let threadInspector = SentryThreadInspector(options: options)
6+
let processInfoWrapper = SentryDependencyContainer.sharedInstance().processInfoWrapper
7+
return SentryFileIOTracker(threadInspector: threadInspector, processInfoWrapper: processInfoWrapper)
8+
}
9+
}

Tests/SentryTests/Integrations/Performance/IO/SentryNSFileManagerSwizzlingTests.m

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -56,12 +56,7 @@ - (void)setUpNSFileManagerSwizzlingWithEnabledFlag:(bool)enableFileManagerSwizzl
5656
SentryOptions *options = [[SentryOptions alloc] init];
5757
options.enableFileManagerSwizzling = enableFileManagerSwizzling;
5858

59-
SentryThreadInspector *threadInspector =
60-
[[SentryThreadInspector alloc] initWithOptions:options];
61-
id<SentryProcessInfoSource> processInfoWrapper =
62-
[SentryDependencyContainer.sharedInstance processInfoWrapper];
63-
self->tracker = [[SentryFileIOTracker alloc] initWithThreadInspector:threadInspector
64-
processInfoWrapper:processInfoWrapper];
59+
self->tracker = [FileIOTrackerTestHelpers makeTrackerWithOptions:options];
6560
[tracker enable];
6661

6762
[[SentryNSFileManagerSwizzling shared] startWithOptions:options tracker:self->tracker];

Tests/SentryTests/Integrations/Performance/UIViewController/SentryTimeToDisplayTrackerTest.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ class SentryTimeToDisplayTrackerTest: XCTestCase {
3939
dispatchQueueWrapper: dispatchQueue
4040
)
4141

42-
let hub = TestHub(client: SentryClient(options: options, fileManager: fileManager, deleteOldEnvelopeItems: false), andScope: nil)
42+
let hub = TestHub(client: SentryClient(options: options, fileManager: fileManager), andScope: nil)
4343
return SentryTracer(transactionContext: TransactionContext(operation: "ui.load"), hub: hub, configuration: SentryTracerConfiguration(block: {
4444
$0.waitForChildren = true
4545
}))

Tests/SentryTests/Integrations/SentryCrash/SentryCrashIntegrationTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
3030
options: options,
3131
dateProvider: dateProvider,
3232
dispatchQueueWrapper: dispatchQueueWrapper
33-
), deleteOldEnvelopeItems: false)
33+
))
3434
hub = TestHub(client: client, andScope: nil)
3535

3636
fileManager = try TestFileManager(
@@ -398,7 +398,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
398398
api?.pointee.setEnabled(true)
399399

400400
let transport = TestTransport()
401-
let client = SentryClient(options: fixture.options, fileManager: fixture.fileManager, deleteOldEnvelopeItems: false)
401+
let client = SentryClient(options: fixture.options, fileManager: fixture.fileManager)
402402
Dynamic(client).transportAdapter = TestTransportAdapter(transports: [transport], options: fixture.options)
403403
hub.bindClient(client)
404404

0 commit comments

Comments
 (0)