From 1b12a7bd14e3cb15aa593752324834990bdd796b Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Latour Date: Tue, 29 Apr 2014 22:12:28 -0700 Subject: [PATCH] Ensure pending scheduled callbacks have executed in "run" APIs --- GCDWebServer/Core/GCDWebServer.m | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/GCDWebServer/Core/GCDWebServer.m b/GCDWebServer/Core/GCDWebServer.m index aa684e9..8f7742e 100644 --- a/GCDWebServer/Core/GCDWebServer.m +++ b/GCDWebServer/Core/GCDWebServer.m @@ -678,6 +678,11 @@ static inline NSString* _EncodeBase64(NSString* string) { [self stop]; success = YES; } + while (1) { + if (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.1, true) == kCFRunLoopRunTimedOut) { // Ensure pending scheduled callbacks have been executed + break; + } + } signal(SIGINT, intHandler); signal(SIGTERM, termHandler); } @@ -966,6 +971,7 @@ static void _LogResult(NSString* format, ...) { } - (NSInteger)runTestsWithOptions:(NSDictionary*)options inDirectory:(NSString*)path { + DCHECK([NSThread isMainThread]); NSArray* ignoredHeaders = @[@"Date", @"Etag"]; // Dates are always different by definition and ETags depend on file system node IDs NSInteger result = -1; if ([self startWithOptions:options error:NULL]) { @@ -1069,6 +1075,12 @@ static void _LogResult(NSString* format, ...) { } [self stop]; + + while (1) { + if (CFRunLoopRunInMode(kCFRunLoopDefaultMode, 0.1, true) == kCFRunLoopRunTimedOut) { // Ensure pending scheduled callbacks have been executed + break; + } + } } return result; }