From 856461946623b9368ed35f7a9013bfd736a3f1e9 Mon Sep 17 00:00:00 2001 From: Markus Kauppila Date: Tue, 7 Jun 2011 21:11:11 +0300 Subject: [PATCH] Initial version of "scan tests/ for test suites" functionality. --- test/test-automation/runner.c | 87 +++++++++++++++++++++++++++-------- 1 file changed, 68 insertions(+), 19 deletions(-) diff --git a/test/test-automation/runner.c b/test/test-automation/runner.c index a37f9dc1e..662043436 100644 --- a/test/test-automation/runner.c +++ b/test/test-automation/runner.c @@ -24,6 +24,7 @@ #include #include #include +#include #include @@ -45,33 +46,78 @@ static int only_selected_test = 0; static int only_selected_suite = 0; //d_namlen > 2) { // discards . and .. + const int bufferSize = 1024; + char buffer[bufferSize]; + memset(buffer, 0, bufferSize); + + strcat(buffer, "tests/"); // \todo convert to define or something + + char *name = strtok(entry->d_name, "."); + char *extension = strtok(NULL, "."); + if(strcmp(extension, "dylib") == 0 || strcmp(extension, "so") == 0) { + strcat(buffer, name); + strcat(buffer, "."); + strcat(buffer, extension); + + TestSuiteReference *reference = (TestSuiteReference *) SDL_malloc(sizeof(TestSuiteReference)); + memset(reference, 0, sizeof(TestSuiteReference)); + + int length = strlen(buffer) + 1; // + 1 for '\0'? + reference->name = SDL_malloc(length * sizeof(char)); + + strcpy(reference->name, buffer); + reference->next = suites; + + suites = reference; + + // printf("Reference added to: %s\n", buffer) + } + } + } + + closedir(directory); + } else { + perror("Couldn't open directory: tests/"); + } + + return suites; } @@ -381,9 +427,12 @@ main(int argc, char *argv[]) int suiteCounter = 0; const Uint32 startTicks = SDL_GetTicks(); - char **testSuiteNames = ScanForTestSuites(); + TestSuiteReference *suites = ScanForTestSuites(); + + TestSuiteReference *suiteReference = NULL; + for(suiteReference = suites; suiteReference; suiteReference = suiteReference->next) { + char *testSuiteName = suiteReference->name; - for(testSuiteName = testSuiteNames[suiteCounter]; testSuiteName; testSuiteName = testSuiteNames[++suiteCounter]) { // if the current suite isn't selected, go to next suite if(SuiteIsSelected(testSuiteName)) { void *suite = LoadTestSuite(testSuiteName);