Skip to content

Commit

Permalink
Defer test observation center setup to fix Xcode 7.3 regression
Browse files Browse the repository at this point in the history
  • Loading branch information
Brian Croom and Sam Coward committed Mar 31, 2016
1 parent 0b92d9e commit 2492244
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
12 changes: 8 additions & 4 deletions Source/XCTest/CDRXCTestFunctions.m
Expand Up @@ -32,10 +32,14 @@ void CDRInjectIntoXCTestRunner() {
// if possible, use the new XCTestObservation protocol available in Xcode 7
Class observationCenterClass = NSClassFromString(@"XCTestObservationCenter");
if (observationCenterClass && [observationCenterClass respondsToSelector:@selector(sharedTestObservationCenter)]) {
id observationCenter = [observationCenterClass sharedTestObservationCenter];
static CDRXCTestObserver *xcTestObserver;
xcTestObserver = [[CDRXCTestObserver alloc] init];
[observationCenter addTestObserver:xcTestObserver];
// Accessing the `sharedTestObservationCenter` too early causes XCTest console output to break when running
// on Xcode 7.3. Deferring adding the observer works around this issue. (rdar://25456276)
dispatch_async(dispatch_get_main_queue(), ^{
id observationCenter = [observationCenterClass sharedTestObservationCenter];
static CDRXCTestObserver *xcTestObserver;
xcTestObserver = [[CDRXCTestObserver alloc] init];
[observationCenter addTestObserver:xcTestObserver];
});
}

Class testSuiteMetaClass = object_getClass(testSuiteClass);
Expand Down
5 changes: 4 additions & 1 deletion Spec/SpecBundle/Support/TestObservationHelper.m
Expand Up @@ -16,7 +16,10 @@ + (void)load {
if (observationCenterClass && [observationCenterClass respondsToSelector:@selector(sharedTestObservationCenter)]) {
_knownTestSuites = [NSMutableArray array];

[[observationCenterClass sharedTestObservationCenter] addTestObserver:(id)[TestObservationHelper new]];
// See comment in CDRXCTestFunctions.m for context on the dispatch_async
dispatch_async(dispatch_get_main_queue(), ^{
[[observationCenterClass sharedTestObservationCenter] addTestObserver:(id)[TestObservationHelper new]];
});
}
}

Expand Down

0 comments on commit 2492244

Please sign in to comment.