Skip to content

Deduplicate SentryOptions default value tests #3564

@armcknight

Description

@armcknight

Description

We have lots of test methods that test each option's default value in isolation:
image

but we also have a big method that asserts all the default values at

- (void)assertDefaultValues:(SentryOptions *)options
{
XCTAssertEqual(YES, options.enabled);
XCTAssertEqual(2.0, options.shutdownTimeInterval);
XCTAssertEqual(NO, options.debug);
XCTAssertEqual(kSentryLevelDebug, options.diagnosticLevel);
XCTAssertEqual(options.environment, kSentryDefaultEnvironment);
XCTAssertNil(options.dist);
XCTAssertEqual(defaultMaxBreadcrumbs, options.maxBreadcrumbs);
XCTAssertTrue(options.enableNetworkBreadcrumbs);
XCTAssertEqual(30, options.maxCacheItems);
XCTAssertTrue([[self getDefaultCacheDirectoryPath] isEqualToString:options.cacheDirectoryPath]);
XCTAssertNil(options.beforeSend);
XCTAssertNil(options.beforeBreadcrumb);
XCTAssertNil(options.onCrashedLastRun);
XCTAssertTrue([[SentryOptions defaultIntegrations] isEqualToArray:options.integrations],
@"Default integrations are not set correctly");
XCTAssertEqual(@1, options.sampleRate);
XCTAssertEqual(YES, options.enableAutoSessionTracking);
XCTAssertEqual(YES, options.enableWatchdogTerminationTracking);
XCTAssertEqual([@30000 unsignedIntValue], options.sessionTrackingIntervalMillis);
XCTAssertEqual(YES, options.attachStacktrace);
XCTAssertEqual(20 * 1024 * 1024, options.maxAttachmentSize);
XCTAssertEqual(NO, options.sendDefaultPii);
XCTAssertTrue(options.enableAutoPerformanceTracing);
#if SENTRY_HAS_UIKIT
XCTAssertTrue(options.enableUIViewControllerTracing);
XCTAssertFalse(options.attachScreenshot);
XCTAssertEqual(3.0, options.idleTimeout);
XCTAssertEqual(options.enableUserInteractionTracing, YES);
XCTAssertEqual(options.enablePreWarmedAppStartTracing, NO);
XCTAssertEqual(options.attachViewHierarchy, NO);
#endif
XCTAssertFalse(options.enableTracing);
XCTAssertTrue(options.enableAppHangTracking);
XCTAssertEqual(options.appHangTimeoutInterval, 2);
XCTAssertEqual(YES, options.enableNetworkTracking);
XCTAssertNil(options.tracesSampleRate);
XCTAssertNil(options.tracesSampler);
XCTAssertEqualObjects([self getDefaultInAppIncludes], options.inAppIncludes);
XCTAssertEqual(@[], options.inAppExcludes);
XCTAssertNil(options.urlSessionDelegate);
XCTAssertEqual(YES, options.enableSwizzling);
XCTAssertEqual(YES, options.enableFileIOTracing);
XCTAssertEqual(YES, options.enableAutoBreadcrumbTracking);
XCTAssertFalse(options.swiftAsyncStacktraces);
#if SENTRY_HAS_METRIC_KIT
if (@available(iOS 15.0, macOS 12.0, macCatalyst 15.0, *)) {
XCTAssertEqual(NO, options.enableMetricKit);
}
#endif
NSRegularExpression *regexTrace = options.tracePropagationTargets[0];
XCTAssertTrue([regexTrace.pattern isEqualToString:@".*"]);
NSRegularExpression *regexRequests = options.failedRequestTargets[0];
XCTAssertTrue([regexRequests.pattern isEqualToString:@".*"]);
XCTAssertEqual(YES, options.enableCaptureFailedRequests);
SentryHttpStatusCodeRange *range = options.failedRequestStatusCodes[0];
XCTAssertEqual(500, range.min);
XCTAssertEqual(599, range.max);
XCTAssertFalse(options.enableTimeToFullDisplayTracing);
#if SENTRY_TARGET_PROFILING_SUPPORTED
# pragma clang diagnostic push
# pragma clang diagnostic ignored "-Wdeprecated-declarations"
XCTAssertEqual(NO, options.enableProfiling);
# pragma clang diagnostic pop
XCTAssertNil(options.profilesSampleRate);
XCTAssertNil(options.profilesSampler);
#endif
}

Each of the individual methods instantiates a SentryOptions like so: SentryOptions *options = [self getValidOptions:@{}];, but we could just create one and call assertDefaultValues on it.

Metadata

Metadata

Assignees

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions