Skip to content
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
4 changes: 4 additions & 0 deletions Sentry.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -1037,6 +1037,7 @@
FA1841832E4B457F005DEDC7 /* SentryApplication.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA18417D2E4B457B005DEDC7 /* SentryApplication.swift */; };
FA21A2EF2E60E9CB00E7EADB /* EnvelopeComparison.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA21A2E92E60E9C700E7EADB /* EnvelopeComparison.swift */; };
FA21F0B42E4A2A80008B4E5A /* SentryAppState.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA4C32972DF7513F001D7B01 /* SentryAppState.swift */; };
FA27EBF52EB82FAD00F2ECF7 /* FileIOTrackerTestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA27EBEF2EB82FA800F2ECF7 /* FileIOTrackerTestHelpers.swift */; };
FA34C1A32E692A5000BC52AA /* SentryEnvelopeItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA34C1A22E692A5000BC52AA /* SentryEnvelopeItem.swift */; };
FA3734842E0F086C0091EF24 /* SentryDependencyContainerSwiftHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = FA3734832E0F07A20091EF24 /* SentryDependencyContainerSwiftHelper.h */; };
FA3734862E0F09320091EF24 /* SentryDependencyContainerSwiftHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = FA3734852E0F092F0091EF24 /* SentryDependencyContainerSwiftHelper.m */; };
Expand Down Expand Up @@ -2415,6 +2416,7 @@
FA034AC72DD3DB4900FE3107 /* SentryIntegrationProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryIntegrationProtocol.h; path = Public/SentryIntegrationProtocol.h; sourceTree = "<group>"; };
FA18417D2E4B457B005DEDC7 /* SentryApplication.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryApplication.swift; sourceTree = "<group>"; };
FA21A2E92E60E9C700E7EADB /* EnvelopeComparison.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnvelopeComparison.swift; sourceTree = "<group>"; };
FA27EBEF2EB82FA800F2ECF7 /* FileIOTrackerTestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FileIOTrackerTestHelpers.swift; sourceTree = "<group>"; };
FA34C1A22E692A5000BC52AA /* SentryEnvelopeItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SentryEnvelopeItem.swift; sourceTree = "<group>"; };
FA3734832E0F07A20091EF24 /* SentryDependencyContainerSwiftHelper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = SentryDependencyContainerSwiftHelper.h; path = include/SentryDependencyContainerSwiftHelper.h; sourceTree = "<group>"; };
FA3734852E0F092F0091EF24 /* SentryDependencyContainerSwiftHelper.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SentryDependencyContainerSwiftHelper.m; sourceTree = "<group>"; };
Expand Down Expand Up @@ -4621,6 +4623,7 @@
D8CE69BB277E39C700C6EC5C /* SentryFileIOTrackingIntegrationObjCTests.m */,
D885266327739D01001269FC /* SentryFileIOTrackingIntegrationTests.swift */,
7B82722A27A3220A00F4BFF4 /* SentryFileIoTrackingUnitTests.swift */,
FA27EBEF2EB82FA800F2ECF7 /* FileIOTrackerTestHelpers.swift */,
D4AF00242D2E93C400F5F3D7 /* SentryNSFileManagerSwizzlingTests.m */,
);
path = IO;
Expand Down Expand Up @@ -6163,6 +6166,7 @@
7B5B94352657AD21002E474B /* SentryFramesTrackingIntegrationTests.swift in Sources */,
D43A2A142DD4816500114724 /* SentryWeakMapTests.swift in Sources */,
8431EE5B29ADB8EA00D8DC56 /* SentryTimeTests.m in Sources */,
FA27EBF52EB82FAD00F2ECF7 /* FileIOTrackerTestHelpers.swift in Sources */,
7B0A54562523178700A71716 /* SentryScopeSwiftTests.swift in Sources */,
7B5B94332657A816002E474B /* SentryAppStartTrackingIntegrationTests.swift in Sources */,
62278CA82E30B21A0022ABC6 /* SentryHttpTransportFlushIntegrationTests.swift in Sources */,
Expand Down
19 changes: 7 additions & 12 deletions SentryTestUtils/TestClient.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,27 @@ public class TestClient: SentryClient {
public override init?(options: Options) {
super.init(
options: options,
transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options),
fileManager: try! TestFileManager(
options: options,
dateProvider: TestCurrentDateProvider(),
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
),
deleteOldEnvelopeItems: false,
transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options)
threadInspector: SentryDefaultThreadInspector(options: options),
debugImageProvider: SentryDependencyContainer.sharedInstance().debugImageProvider,
random: SentryDependencyContainer.sharedInstance().random,
locale: NSLocale.autoupdatingCurrent,
timezone: NSCalendar.autoupdatingCurrent.timeZone
)
}

@_spi(Private) public override init?(options: Options, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool) {
super.init(options: options, fileManager: fileManager, deleteOldEnvelopeItems: deleteOldEnvelopeItems, transportAdapter: TestTransportAdapter(transports: [TestTransport()], options: options))
}

@_spi(Private) public 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
@_spi(Private) public override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, deleteOldEnvelopeItems: Bool, threadInspector: SentryDefaultThreadInspector, debugImageProvider: SentryDebugImageProvider, random: SentryRandomProtocol, locale: Locale, timezone: TimeZone) {
@_spi(Private) public override init(options: Options, transportAdapter: SentryTransportAdapter, fileManager: SentryFileManager, threadInspector: SentryDefaultThreadInspector, debugImageProvider: SentryDebugImageProvider, random: SentryRandomProtocol, locale: Locale, timezone: TimeZone) {
super.init(
options: options,
transportAdapter: transportAdapter,
fileManager: fileManager,
deleteOldEnvelopeItems: false,
threadInspector: threadInspector,
debugImageProvider: debugImageProvider,
random: random,
Expand Down
48 changes: 6 additions & 42 deletions Sources/Sentry/SentryClient.m
Original file line number Diff line number Diff line change
Expand Up @@ -61,37 +61,18 @@ @interface SentryClient ()
@implementation SentryClient

- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
{
return [self initWithOptions:options
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
dispatchQueue:SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
deleteOldEnvelopeItems:YES];
}

- (nullable instancetype)initWithOptions:(SentryOptions *)options
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
{
NSError *error;
SentryFileManager *fileManager = [[SentryFileManager alloc] initWithOptions:options
dateProvider:dateProvider
dispatchQueueWrapper:dispatchQueue
error:&error];
SentryFileManager *fileManager = [[SentryFileManager alloc]
initWithOptions:options
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
dispatchQueueWrapper:SentryDependencyContainer.sharedInstance.dispatchQueueWrapper
error:&error];
if (error != nil) {
SENTRY_LOG_FATAL(@"Failed to initialize file system: %@", error.localizedDescription);
return nil;
}
return [self initWithOptions:options
fileManager:fileManager
deleteOldEnvelopeItems:deleteOldEnvelopeItems];
}

/** Internal constructor for testing purposes. */
- (instancetype)initWithOptions:(SentryOptions *)options
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
{
NSArray<id<SentryTransport>> *transports =
[SentryTransportFactory initTransports:options
dateProvider:SentryDependencyContainer.sharedInstance.dateProvider
Expand All @@ -101,26 +82,12 @@ - (instancetype)initWithOptions:(SentryOptions *)options
SentryTransportAdapter *transportAdapter =
[[SentryTransportAdapter alloc] initWithTransports:transports 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

{
SentryDefaultThreadInspector *threadInspector =
[[SentryDefaultThreadInspector alloc] initWithOptions:options];

return [self initWithOptions:options
transportAdapter:transportAdapter
fileManager:fileManager
deleteOldEnvelopeItems:deleteOldEnvelopeItems
threadInspector:threadInspector
debugImageProvider:[SentryDependencyContainer sharedInstance].debugImageProvider
random:[SentryDependencyContainer sharedInstance].random
Expand All @@ -131,7 +98,6 @@ - (instancetype)initWithOptions:(SentryOptions *)options
- (instancetype)initWithOptions:(SentryOptions *)options
transportAdapter:(SentryTransportAdapter *)transportAdapter
fileManager:(SentryFileManager *)fileManager
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems
threadInspector:(SentryDefaultThreadInspector *)threadInspector
debugImageProvider:(SentryDebugImageProvider *)debugImageProvider
random:(id<SentryRandomProtocol>)random
Expand All @@ -154,9 +120,7 @@ - (instancetype)initWithOptions:(SentryOptions *)options
// executing this on the main thread, we cache the installationID async here.
[SentryInstallation cacheIDAsyncWithCacheDirectoryPath:options.cacheDirectoryPath];

if (deleteOldEnvelopeItems) {
[fileManager deleteOldEnvelopeItems];
}
[fileManager deleteOldEnvelopeItems];
}
return self;
}
Expand Down
4 changes: 2 additions & 2 deletions Sources/Swift/Helper/SentryEnabledFeaturesBuilder.swift
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
@_implementationOnly import _SentryPrivate
import Foundation

@objcMembers @_spi(Private) public class SentryEnabledFeaturesBuilder: NSObject {
final class SentryEnabledFeaturesBuilder: NSObject {

// swiftlint:disable cyclomatic_complexity function_body_length
public static func getEnabledFeatures(options: Options?) -> [String] {
static func getEnabledFeatures(options: Options?) -> [String] {
guard let options = options else {
return []
}
Expand Down
2 changes: 1 addition & 1 deletion Sources/Swift/SentryCrash/SentryThreadInspector.swift
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
internalHelper = SentryDefaultThreadInspector(options: SentrySDKInternal.options)
}

@objc public init(options: Options) {
init(options: Options) {
internalHelper = SentryDefaultThreadInspector(options: options)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,6 @@ class SentryFeedbackTests: XCTestCase {
dateProvider: TestCurrentDateProvider(),
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
)),
deleteOldEnvelopeItems: false,
threadInspector: TestDefaultThreadInspector.instance,
debugImageProvider: TestDebugImageProvider(),
random: TestRandom(value: 1.0),
Expand Down Expand Up @@ -250,7 +249,6 @@ class SentryFeedbackTests: XCTestCase {
dateProvider: TestCurrentDateProvider(),
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
)),
deleteOldEnvelopeItems: false,
threadInspector: TestDefaultThreadInspector.instance,
debugImageProvider: TestDebugImageProvider(),
random: TestRandom(value: 1.0),
Expand Down Expand Up @@ -293,7 +291,6 @@ class SentryFeedbackTests: XCTestCase {
dateProvider: TestCurrentDateProvider(),
dispatchQueueWrapper: TestSentryDispatchQueueWrapper()
)),
deleteOldEnvelopeItems: false,
threadInspector: TestDefaultThreadInspector.instance,
debugImageProvider: TestDebugImageProvider(),
random: TestRandom(value: 1.0),
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
@_spi(Private) @testable import Sentry

@objc public class FileIOTrackerTestHelpers: NSObject {
@objc static func makeTracker(options: Options) -> SentryFileIOTracker {
let threadInspector = SentryThreadInspector(options: options)
let processInfoWrapper = SentryDependencyContainer.sharedInstance().processInfoWrapper
return SentryFileIOTracker(threadInspector: threadInspector, processInfoWrapper: processInfoWrapper)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,7 @@ - (void)setUpNSFileManagerSwizzlingWithEnabledFlag:(bool)enableFileManagerSwizzl
SentryOptions *options = [[SentryOptions alloc] init];
options.enableFileManagerSwizzling = enableFileManagerSwizzling;

SentryThreadInspector *threadInspector =
[[SentryThreadInspector alloc] initWithOptions:options];
id<SentryProcessInfoSource> processInfoWrapper =
[SentryDependencyContainer.sharedInstance processInfoWrapper];
self->tracker = [[SentryFileIOTracker alloc] initWithThreadInspector:threadInspector
processInfoWrapper:processInfoWrapper];
self->tracker = [FileIOTrackerTestHelpers makeTrackerWithOptions:options];
[tracker enable];

[[SentryNSFileManagerSwizzling shared] startWithOptions:options tracker:self->tracker];
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class SentryTimeToDisplayTrackerTest: XCTestCase {
dispatchQueueWrapper: dispatchQueue
)

let hub = TestHub(client: SentryClient(options: options, fileManager: fileManager, deleteOldEnvelopeItems: false), andScope: nil)
let hub = TestHub(client: SentryClient(options: options, fileManager: fileManager), andScope: nil)
return SentryTracer(transactionContext: TransactionContext(operation: "ui.load"), hub: hub, configuration: SentryTracerConfiguration(block: {
$0.waitForChildren = true
}))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
options: options,
dateProvider: dateProvider,
dispatchQueueWrapper: dispatchQueueWrapper
), deleteOldEnvelopeItems: false)
))
hub = TestHub(client: client, andScope: nil)

fileManager = try TestFileManager(
Expand Down Expand Up @@ -398,7 +398,7 @@ class SentryCrashIntegrationTests: NotificationCenterTestCase {
api?.pointee.setEnabled(true)

let transport = TestTransport()
let client = SentryClient(options: fixture.options, fileManager: fixture.fileManager, deleteOldEnvelopeItems: false)
let client = SentryClient(options: fixture.options, fileManager: fixture.fileManager)
Dynamic(client).transportAdapter = TestTransportAdapter(transports: [transport], options: fixture.options)
hub.bindClient(client)

Expand Down
15 changes: 0 additions & 15 deletions Tests/SentryTests/SentryClient+TestInit.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,24 +13,9 @@ NS_ASSUME_NONNULL_BEGIN

@interface SentryClient ()

- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
dateProvider:(id<SentryCurrentDateProvider>)dateProvider
dispatchQueue:(SentryDispatchQueueWrapper *)dispatchQueue
deleteOldEnvelopeItems:(BOOL)deleteOldEnvelopeItems;

- (_Nullable instancetype)initWithOptions:(SentryOptions *)options
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:(SentryDefaultThreadInspector *)threadInspector
debugImageProvider:(SentryDebugImageProvider *)debugImageProvider
random:(id<SentryRandomProtocol>)random
Expand Down
28 changes: 20 additions & 8 deletions Tests/SentryTests/SentryClientTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@
@_spi(Private) import SentryTestUtils
import XCTest

extension SentryClient {
convenience init(options: Options, fileManager: SentryFileManager) {
let transports = TransportInitializer.initTransports(options, dateProvider: SentryDependencyContainer.sharedInstance().dateProvider, sentryFileManager: fileManager, rateLimits: SentryDependencyContainer.sharedInstance().rateLimits)

let transportAdapter = SentryTransportAdapter(transports: transports, options: options)

self.init(
options: options,
transportAdapter: transportAdapter,
fileManager: fileManager,
threadInspector: SentryDefaultThreadInspector(options: options),
debugImageProvider: SentryDependencyContainer.sharedInstance().debugImageProvider,
random: SentryDependencyContainer.sharedInstance().random,
locale: Locale.autoupdatingCurrent,
timezone: Calendar.autoupdatingCurrent.timeZone)
}
}

// swiftlint:disable file_length
// We are aware that the client has a lot of logic and we should maybe
// move some of it to other classes.
Expand Down Expand Up @@ -96,7 +114,6 @@ class SentryClientTests: XCTestCase {
options: options,
transportAdapter: transportAdapter,
fileManager: fileManager,
deleteOldEnvelopeItems: false,
threadInspector: threadInspector,
debugImageProvider: debugImageProvider,
random: random,
Expand Down Expand Up @@ -161,7 +178,7 @@ class SentryClientTests: XCTestCase {
}

func testInit_CallsDeleteOldEnvelopeItemsInvocations() throws {
_ = SentryClient(options: Options(), fileManager: fixture.fileManager, deleteOldEnvelopeItems: true)
_ = SentryClient(options: Options(), fileManager: fixture.fileManager)

XCTAssertEqual(1, fixture.fileManager.deleteOldEnvelopeItemsInvocations.count)
}
Expand Down Expand Up @@ -1751,12 +1768,7 @@ class SentryClientTests: XCTestCase {

let options = Options()
options.dsn = SentryClientTests.dsn
let client = SentryClient(
options: options,
dateProvider: fixture.dateProvider,
dispatchQueue: fixture.dispatchQueue,
deleteOldEnvelopeItems: false
)
let client = SentryClient(options: options)

XCTAssertNil(client)
}
Expand Down
3 changes: 1 addition & 2 deletions Tests/SentryTests/SentryHubTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -277,8 +277,7 @@ class SentryHubTests: XCTestCase {
func testAddUserToTheScope() throws {
let client = SentryClient(
options: fixture.options,
fileManager: fixture.fileManager,
deleteOldEnvelopeItems: false
fileManager: fixture.fileManager
)
let hub = SentryHub(client: client, andScope: Scope())

Expand Down
Loading
Loading