Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test: Improvements for TestClient #2751

Merged
merged 2 commits into from
Mar 3, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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