From a5ec862a2a241885918d4d843bbc93c3804a57e6 Mon Sep 17 00:00:00 2001 From: Juha Alanen Date: Wed, 12 Feb 2020 15:50:39 +0200 Subject: [test-runner] Share common code between test runners Also remove some unnecessary files. --- platform/ios/ios.cmake | 6 +-- platform/ios/test/common/ViewController.h | 6 --- platform/ios/test/common/ViewController.m | 22 -------- platform/ios/test/common/iosTestRunner.mm | 83 +++++++++++++++++++++++++++++++ render-test/ios/main.m | 9 ---- test/ios/iosTestRunner.h | 3 ++ test/ios/iosTestRunner.mm | 82 ------------------------------ 7 files changed, 87 insertions(+), 124 deletions(-) delete mode 100644 platform/ios/test/common/ViewController.h delete mode 100644 platform/ios/test/common/ViewController.m create mode 100644 platform/ios/test/common/iosTestRunner.mm delete mode 100644 render-test/ios/main.m delete mode 100644 test/ios/iosTestRunner.mm diff --git a/platform/ios/ios.cmake b/platform/ios/ios.cmake index 18b2b2aad0..f9f6f540ce 100644 --- a/platform/ios/ios.cmake +++ b/platform/ios/ios.cmake @@ -108,8 +108,6 @@ if(MBGL_IOS_RENDER_TEST) ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ios_test_runner.hpp ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.h ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.m - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ViewController.h - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ViewController.m ${PROJECT_SOURCE_DIR}/platform/ios/test/common/main.m ${PROJECT_SOURCE_DIR}/render-test/ios/ios_test_runner.cpp ${PROJECT_SOURCE_DIR}/render-test/ios/iosTestRunner.h @@ -202,12 +200,10 @@ if(MBGL_IOS_UNIT_TEST) ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ios_test_runner.hpp ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.h ${PROJECT_SOURCE_DIR}/platform/ios/test/common/AppDelegate.m - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ViewController.h - ${PROJECT_SOURCE_DIR}/platform/ios/test/common/ViewController.m + ${PROJECT_SOURCE_DIR}/platform/ios/test/common/iosTestRunner.mm ${PROJECT_SOURCE_DIR}/platform/ios/test/common/main.m ${PROJECT_SOURCE_DIR}/test/ios/ios_test_runner.cpp ${PROJECT_SOURCE_DIR}/test/ios/iosTestRunner.h - ${PROJECT_SOURCE_DIR}/test/ios/iosTestRunner.mm ${RESOURCES} ) initialize_ios_target(UnitTestsApp) diff --git a/platform/ios/test/common/ViewController.h b/platform/ios/test/common/ViewController.h deleted file mode 100644 index 9c7dfc57ec..0000000000 --- a/platform/ios/test/common/ViewController.h +++ /dev/null @@ -1,6 +0,0 @@ -#import - -@interface ViewController : UIViewController - -@end - diff --git a/platform/ios/test/common/ViewController.m b/platform/ios/test/common/ViewController.m deleted file mode 100644 index e9c526122a..0000000000 --- a/platform/ios/test/common/ViewController.m +++ /dev/null @@ -1,22 +0,0 @@ -#import "ViewController.h" -#import "iosTestRunner.h" - -@interface ViewController () -{ - IosTestRunner* i; -} -@end - -@implementation ViewController - -- (void)viewDidLoad { - [super viewDidLoad]; -// In order to run test runner with app itself instead of with unit test, comment out the following line. -// i = [[IosTestRunner alloc]init]; -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; -} - -@end diff --git a/platform/ios/test/common/iosTestRunner.mm b/platform/ios/test/common/iosTestRunner.mm new file mode 100644 index 0000000000..b1efa74e6a --- /dev/null +++ b/platform/ios/test/common/iosTestRunner.mm @@ -0,0 +1,83 @@ +#import "iosTestRunner.h" + +#include + +#include + +@interface IosTestRunner () + +@property (nullable) TestRunner *runner; + +@property (copy, nullable) NSString *resultPath; + +@property BOOL testStatus; + +@end + +@implementation IosTestRunner + +-(instancetype)init +{ + self = [super init]; + if (self) { + self.testStatus = NO; + self.runner = new TestRunner(); + NSError *error; + NSFileManager *fileManager = [NSFileManager defaultManager]; + NSString *bundleRoot = [[NSBundle mainBundle] bundlePath]; + NSArray *bundleContents = [fileManager contentsOfDirectoryAtPath: bundleRoot error: &error]; + NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); + NSString *documentsDir = [paths objectAtIndex: 0]; + + for (uint32_t i = 0; i < bundleContents.count; i++) { + NSString *dirName = [bundleContents objectAtIndex: i]; + if ([dirName isEqualToString: dataDir]) { + NSString *destinationPath = [documentsDir stringByAppendingPathComponent: dirName]; + BOOL success = [fileManager fileExistsAtPath: destinationPath]; + if (success) { + [fileManager removeItemAtPath:destinationPath error:NULL]; + } + + success = [fileManager fileExistsAtPath: destinationPath]; + if (!success) { + NSString *copyDirPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: dirName]; + success = [fileManager copyItemAtPath: copyDirPath toPath: destinationPath error: &error]; + + if (!success) { + NSLog(@"Failed to copy file '%@'", dirName); + NSAssert1(0, @"Failed to copy file, error '%@'", [error localizedDescription]); + } else { + NSLog(@"File '%@' copied OK", dirName); + } + } else { + NSLog(@"Failed to remove file '%@'", dirName); + NSAssert1(0, @"Failed to remove file, error '%@'", [error localizedDescription]); + } + break; + } + } + NSString *baseDir = [documentsDir stringByAppendingPathComponent: dataDir]; + std::string basePath = std::string([baseDir UTF8String]); + self.testStatus = self.runner->startTest(basePath) ? YES : NO; + self.resultPath = [baseDir stringByAppendingPathComponent: resultFilePath]; + + BOOL fileFound = [fileManager fileExistsAtPath: self.resultPath]; + if (fileFound == NO) { + NSLog(@"Test result file '%@' does not exist", self.resultPath); + self.testStatus = NO; + } + + delete self.runner; + self.runner = nullptr; + } + return self; +} + +- (NSString*) getResultPath { + return self.resultPath; +} + +- (BOOL) getTestStatus { + return self.testStatus; +} +@end diff --git a/render-test/ios/main.m b/render-test/ios/main.m deleted file mode 100644 index f813c8fea9..0000000000 --- a/render-test/ios/main.m +++ /dev/null @@ -1,9 +0,0 @@ -#import -#import "AppDelegate.h" - -int main(int argc, char * argv[]) -{ - @autoreleasepool { - return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); - } -} diff --git a/test/ios/iosTestRunner.h b/test/ios/iosTestRunner.h index dcbb77e9d4..eefe2da3db 100644 --- a/test/ios/iosTestRunner.h +++ b/test/ios/iosTestRunner.h @@ -1,5 +1,8 @@ #import +NSString *dataDir = @"test-data"; +NSString *resultFilePath = @"test/results.xml"; + __attribute__((visibility ("default"))) @interface IosTestRunner : NSObject diff --git a/test/ios/iosTestRunner.mm b/test/ios/iosTestRunner.mm deleted file mode 100644 index d3f6113a05..0000000000 --- a/test/ios/iosTestRunner.mm +++ /dev/null @@ -1,82 +0,0 @@ -#import "iosTestRunner.h" - -#include - -#include - -@interface IosTestRunner () - -@property (nullable) TestRunner* runner; - -@property (copy, nullable) NSString *resultPath; - -@property BOOL testStatus; - -@end - -@implementation IosTestRunner - --(instancetype)init -{ - self = [super init]; - if (self) { - self.testStatus = NO; - self.runner = new TestRunner(); - NSError *error; - NSFileManager *fileManager = [NSFileManager defaultManager]; - NSString *bundleRoot = [[NSBundle mainBundle] bundlePath]; - NSArray *bundleContents = [fileManager contentsOfDirectoryAtPath: bundleRoot error: &error]; - NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); - NSString *documentsDir = [paths objectAtIndex: 0]; - - for (uint32_t i = 0; i < bundleContents.count; i++) { - NSString *dirName = [bundleContents objectAtIndex: i]; - if ([dirName isEqualToString:@"test-data"]) { - NSString *destinationPath = [documentsDir stringByAppendingPathComponent: dirName]; - BOOL success = [fileManager fileExistsAtPath: destinationPath]; - if (success) { - [fileManager removeItemAtPath:destinationPath error:NULL]; - } - - success = [fileManager fileExistsAtPath: destinationPath]; - if (!success) { - NSString *copyDirPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent: dirName]; - success = [fileManager copyItemAtPath: copyDirPath toPath: destinationPath error: &error]; - - if (!success) { - NSLog(@"Failed to copy file '%@'", dirName); - NSAssert1(0, @"Failed to copy file, error '%@'", [error localizedDescription]); - } else { - NSLog(@"File '%@' copied OK", dirName); - } - } else { - NSLog(@"Failed to remove file '%@'", dirName); - NSAssert1(0, @"Failed to remove file, error '%@'", [error localizedDescription]); - } - break; - } - } - std::string basePath = std::string([documentsDir UTF8String]) + std::string("/test-data"); - self.testStatus = self.runner->startTest(basePath) ? YES : NO; - self.resultPath = [documentsDir stringByAppendingPathComponent:@"/test-data/test/results.xml"]; - - BOOL fileFound = [fileManager fileExistsAtPath: self.resultPath]; - if (fileFound == NO) { - NSLog(@"Test result file '%@' does not exist", self.resultPath); - self.testStatus = NO; - } - - delete self.runner; - self.runner = nullptr; - } - return self; -} - -- (NSString*) getResultPath { - return self.resultPath; -} - -- (BOOL) getTestStatus { - return self.testStatus; -} -@end -- cgit v1.2.1