Skip to content

Commit

Permalink
test: Use TestTransportAdapter for TestClient (#2751)
Browse files Browse the repository at this point in the history
Use the TestTransportAdapter in default init of TestClient.
  • Loading branch information
philipphofmann committed Mar 3, 2023
1 parent d1d5c2d commit 407ff99
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 12 deletions.
29 changes: 26 additions & 3 deletions Sources/Sentry/SentryClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -72,12 +72,15 @@ @implementation SentryClient

- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
{
return [self initWithOptions:options dispatchQueue:[[SentryDispatchQueueWrapper alloc] init]];
return [self initWithOptions:options
dispatchQueue:[[SentryDispatchQueueWrapper alloc] init]
deleteOldEnvelopeItems:YES];
}

/** Internal constructor for testing purposes. */
- (nullable instancetype)initWithOptions:(SentryOptions *)options
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
{
NSError *error;
SentryFileManager *fileManager =
Expand All @@ -89,19 +92,35 @@ - (nullable instancetype)initWithOptions:(SentryOptions *)options
SENTRY_LOG_ERROR(@"Cannot init filesystem.");
return nil;
}
return [self initWithOptions:options fileManager:fileManager];
return [self initWithOptions:options
fileManager:fileManager
deleteOldEnvelopeItems:deleteOldEnvelopeItems];
}

/** Internal constructor for testing purposes. */
- (instancetype)initWithOptions:(SentryOptions *)options
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
{
id<SentryTransport> transport = [SentryTransportFactory initTransport:options
sentryFileManager:fileManager];

SentryTransportAdapter *transportAdapter =
[[SentryTransportAdapter alloc] initWithTransport:transport options:options];

return [self initWithOptions:options
fileManager:fileManager
deleteOldEnvelopeItems:deleteOldEnvelopeItems
transportAdapter:transportAdapter];
}

/** Internal constructor for testing purposes. */
- (instancetype)initWithOptions:(SentryOptions *)options
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
transportAdapter:(SentryTransportAdapter *)transportAdapter

{
SentryInAppLogic *inAppLogic =
[[SentryInAppLogic alloc] initWithInAppIncludes:options.inAppIncludes
inAppExcludes:options.inAppExcludes];
Expand All @@ -119,6 +138,7 @@ - (instancetype)initWithOptions:(SentryOptions *)options
return [self initWithOptions:options
transportAdapter:transportAdapter
fileManager:fileManager
deleteOldEnvelopeItems:deleteOldEnvelopeItems
threadInspector:threadInspector
random:[SentryDependencyContainer sharedInstance].random
crashWrapper:[SentryCrashWrapper sharedInstance]
Expand All @@ -130,6 +150,7 @@ - (instancetype)initWithOptions:(SentryOptions *)options
- (instancetype)initWithOptions:(SentryOptions *)options
transportAdapter:(SentryTransportAdapter *)transportAdapter
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
threadInspector:(SentryThreadInspector *)threadInspector
random:(id<SentryRandom>)random
crashWrapper:(SentryCrashWrapper *)crashWrapper
Expand All @@ -151,7 +172,9 @@ - (instancetype)initWithOptions:(SentryOptions *)options
self.attachmentProcessors = [[NSMutableArray alloc] init];
self.deviceWrapper = deviceWrapper;

[fileManager deleteOldEnvelopeItems];
if (deleteOldEnvelopeItems) {
[fileManager deleteOldEnvelopeItems];
}
}
return self;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
options.dsn = SentryCrashIntegrationTests.dsnAsString
options.releaseName = TestData.appState.releaseName

client = TestClient(options: options, fileManager: try! SentryFileManager(options: options, andCurrentDateProvider: CurrentDate.getProvider()!, dispatchQueueWrapper: dispatchQueueWrapper))
client = TestClient(options: options, fileManager: try! SentryFileManager(options: options, andCurrentDateProvider: CurrentDate.getProvider()!, dispatchQueueWrapper: dispatchQueueWrapper), deleteOldEnvelopeItems: false)
hub = TestHub(client: client, andScope: nil)
}

Expand Down
12 changes: 10 additions & 2 deletions Tests/SentryTests/SentryClient+TestInit.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,22 @@ NS_ASSUME_NONNULL_BEGIN
SentryClient ()

- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue;
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems;

- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
fileManager:(SentryFileManager *)fileManager;
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems;

- (instancetype)initWithOptions:(SentryOptions *)options
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
transportAdapter:(SentryTransportAdapter *)transportAdapter;

- (instancetype)initWithOptions:(SentryOptions *)options
transportAdapter:(SentryTransportAdapter *)transportAdapter
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
threadInspector:(SentryThreadInspector *)threadInspector
random:(id<SentryRandom>)random
crashWrapper:(SentryCrashWrapper *)crashWrapper
Expand Down
5 changes: 3 additions & 2 deletions Tests/SentryTests/SentryClientTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ class SentryClientTest: XCTestCase {
options: options,
transportAdapter: transportAdapter,
fileManager: fileManager,
deleteOldEnvelopeItems: false,
threadInspector: threadInspector,
random: random,
crashWrapper: crashWrapper,
Expand Down Expand Up @@ -141,7 +142,7 @@ class SentryClientTest: XCTestCase {
func testInit_CallsDeleteOldEnvelopeItemsInvocations() throws {
let fileManager = try TestFileManager(options: Options())

_ = SentryClient(options: Options(), fileManager: fileManager)
_ = SentryClient(options: Options(), fileManager: fileManager, deleteOldEnvelopeItems: true)

XCTAssertEqual(1, fileManager.deleteOldEnvelopeItemsInvocations.count)
}
Expand Down Expand Up @@ -1175,7 +1176,7 @@ class SentryClientTest: XCTestCase {

let options = Options()
options.dsn = SentryClientTest.dsn
let client = SentryClient(options: options, dispatchQueue: TestSentryDispatchQueueWrapper())
let client = SentryClient(options: options, dispatchQueue: TestSentryDispatchQueueWrapper(), deleteOldEnvelopeItems: false)

XCTAssertNil(client)

Expand Down
13 changes: 9 additions & 4 deletions Tests/SentryTests/TestClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,25 @@ import Foundation

class TestClient: SentryClient {
override init?(options: Options) {
super.init(options: options, fileManager: try! TestFileManager(options: options))
super.init(options: options, fileManager: try! TestFileManager(options: options), deleteOldEnvelopeItems: false, transportAdapter: TestTransportAdapter(transport: TestTransport(), options: options))
}

override init?(options: Options, fileManager: SentryFileManager) {
super.init(options: options, fileManager: fileManager)
override init?(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool) {
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: TestTransportAdapter(transport: TestTransport(), options: options))
}

override init(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, transportAdapter: SentryTransportAdapter) {
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: transportAdapter)
}

// Without this override we get a fatal error: use of unimplemented initializer
// see https://stackoverflow.com/questions/28187261/ios-swift-fatal-error-use-of-unimplemented-initializer-init
override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, threadInspector: SentryThreadInspector, random: SentryRandomProtocol, crashWrapper: SentryCrashWrapper, deviceWrapper: SentryUIDeviceWrapper, locale: Locale, timezone: TimeZone) {
override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, threadInspector: SentryThreadInspector, random: SentryRandomProtocol, crashWrapper: SentryCrashWrapper, deviceWrapper: SentryUIDeviceWrapper, locale: Locale, timezone: TimeZone) {
super.init(
options: options,
transportAdapter: transportAdapter,
fileManager: fileManager,
deleteOldEnvelopeItems: false,
threadInspector: threadInspector,
random: random,
crashWrapper: crashWrapper,
Expand Down

0 comments on commit 407ff99

Please sign in to comment.