Commit 06529787 authored by Markus Kauppila's avatar Markus Kauppila

Separated test suite name from its directory path. Fixes

usability issues concerning some command line options.
parent 30550572
...@@ -78,6 +78,7 @@ char xsl_stylesheet_name[NAME_BUFFER_SIZE]; ...@@ -78,6 +78,7 @@ char xsl_stylesheet_name[NAME_BUFFER_SIZE];
*/ */
typedef struct TestSuiteReference { typedef struct TestSuiteReference {
char *name; //!< test suite name char *name; //!< test suite name
char *directoryPath; //!< test suites path (eg. tests/libtestsuite)
void *library; //!< pointer to shared/dynamic library implementing the suite void *library; //!< pointer to shared/dynamic library implementing the suite
struct TestSuiteReference *next; //!< Pointer to next item in the list struct TestSuiteReference *next; //!< Pointer to next item in the list
...@@ -283,28 +284,37 @@ ScanForTestSuites(char *directoryName, char *extension) ...@@ -283,28 +284,37 @@ ScanForTestSuites(char *directoryName, char *extension)
} }
if(ok && SDL_strcmp(ext, extension) == 0) { if(ok && SDL_strcmp(ext, extension) == 0) {
char buffer[NAME_BUFFER_SIZE];
memset(buffer, 0, NAME_BUFFER_SIZE);
//! \todo change strcat's to strncats
//strcat(buffer, directoryName);
strcat(buffer, name);
strcat(buffer, ".");
strcat(buffer, ext);
// create test suite reference // create test suite reference
TestSuiteReference *reference = (TestSuiteReference *) SDL_malloc(sizeof(TestSuiteReference)); TestSuiteReference *reference = (TestSuiteReference *) SDL_malloc(sizeof(TestSuiteReference));
memset(reference, 0, 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); const int dirSize = SDL_strlen(directoryName);
const int extSize = SDL_strlen(ext);
const int nameSize = SDL_strlen(name) + 1;
// copy the name
reference->name = SDL_malloc(nameSize * sizeof(char));
if(reference->name == NULL) {
SDL_free(reference);
return NULL;
}
SDL_snprintf(reference->name, nameSize, "%s", name);
// copy the directory path
const int dpSize = dirSize + nameSize + 1 + extSize + 1;
reference->directoryPath = SDL_malloc(dpSize * sizeof(char));
if(reference->directoryPath == NULL) {
SDL_free(reference->name);
SDL_free(reference);
return NULL;
}
SDL_snprintf(reference->directoryPath, dpSize, "%s%s.%s",
directoryName, name, ext);
reference->next = suites; reference->next = suites;
suites = reference; suites = reference;
//printf("Reference added to: %s\n", buffer);
} }
} }
} }
...@@ -323,18 +333,11 @@ ScanForTestSuites(char *directoryName, char *extension) ...@@ -323,18 +333,11 @@ ScanForTestSuites(char *directoryName, char *extension)
* \return Pointer to loaded test suite, or NULL if library could not be loaded * \return Pointer to loaded test suite, or NULL if library could not be loaded
*/ */
void * void *
LoadTestSuite(const char *directory, const char *testSuiteName) LoadTestSuite(const TestSuiteReference *suite)
{ {
const int nameSize = SDL_strlen(testSuiteName); void *library = SDL_LoadObject(suite->directoryPath);
const int dirSize = SDL_strlen(directory);
const int size = nameSize + dirSize+ 1;
char *directoryPath = SDL_malloc(size);
snprintf(directoryPath, size, "%s%s", directory, testSuiteName);
void *library = SDL_LoadObject(directoryPath);
if(library == NULL) { if(library == NULL) {
fprintf(stderr, "Loading %s failed\n", testSuiteName); fprintf(stderr, "Loading %s failed\n", suite->name);
fprintf(stderr, "%s\n", SDL_GetError()); fprintf(stderr, "%s\n", SDL_GetError());
} }
...@@ -352,11 +355,11 @@ LoadTestSuite(const char *directory, const char *testSuiteName) ...@@ -352,11 +355,11 @@ LoadTestSuite(const char *directory, const char *testSuiteName)
* \return Updated TestSuiteReferences with pointer to loaded libraries * \return Updated TestSuiteReferences with pointer to loaded libraries
*/ */
TestSuiteReference * TestSuiteReference *
LoadTestSuites(const char *directory, TestSuiteReference *suites) LoadTestSuites(TestSuiteReference *suites)
{ {
TestSuiteReference *reference = NULL; TestSuiteReference *reference = NULL;
for(reference = suites; reference; reference = reference->next) { for(reference = suites; reference; reference = reference->next) {
reference->library = LoadTestSuite(directory, reference->name); reference->library = LoadTestSuite(reference);
} }
return suites; return suites;
...@@ -375,6 +378,7 @@ UnloadTestSuites(TestSuiteReference *suites) ...@@ -375,6 +378,7 @@ UnloadTestSuites(TestSuiteReference *suites)
TestSuiteReference *ref = suites; TestSuiteReference *ref = suites;
while(ref) { while(ref) {
SDL_free(ref->name); SDL_free(ref->name);
SDL_free(ref->directoryPath);
SDL_UnloadObject(ref->library); SDL_UnloadObject(ref->library);
TestSuiteReference *temp = ref->next; TestSuiteReference *temp = ref->next;
...@@ -691,7 +695,7 @@ main(int argc, char *argv[]) ...@@ -691,7 +695,7 @@ main(int argc, char *argv[])
const Uint32 startTicks = SDL_GetTicks(); const Uint32 startTicks = SDL_GetTicks();
TestSuiteReference *suites = ScanForTestSuites(DEFAULT_TEST_DIRECTORY, extension); TestSuiteReference *suites = ScanForTestSuites(DEFAULT_TEST_DIRECTORY, extension);
suites = LoadTestSuites(DEFAULT_TEST_DIRECTORY, suites); suites = LoadTestSuites(suites);
TestCase *testCases = LoadTestCases(suites); TestCase *testCases = LoadTestCases(suites);
......
...@@ -208,10 +208,10 @@ XMLOpenDocument(const char *rootTag, const char *xslStyle) ...@@ -208,10 +208,10 @@ XMLOpenDocument(const char *rootTag, const char *xslStyle)
const int tempSize = sizeStyleStart + sizeStyleEnd + sizeStyleSheetName + 1; const int tempSize = sizeStyleStart + sizeStyleEnd + sizeStyleSheetName + 1;
char *style = SDL_malloc(tempSize); char *style = SDL_malloc(tempSize);
memset(style, 0, tempSize); memset(style, 0, tempSize);
snprintf(style, tempSize, "%s%s%s", styleStart, xslStyle, styleEnd); SDL_snprintf(style, tempSize, "%s%s%s", styleStart, xslStyle, styleEnd);
memset(buffer, 0, bufferSize); memset(buffer, 0, bufferSize);
snprintf(buffer, bufferSize, "<%s>", rootTag); SDL_snprintf(buffer, bufferSize, "<%s>", rootTag);
AddOpenTag(rootTag); AddOpenTag(rootTag);
...@@ -243,7 +243,7 @@ char * ...@@ -243,7 +243,7 @@ char *
XMLOpenElement(const char *tag) XMLOpenElement(const char *tag)
{ {
memset(buffer, 0, bufferSize); memset(buffer, 0, bufferSize);
snprintf(buffer, bufferSize, "<%s>", tag); SDL_snprintf(buffer, bufferSize, "<%s>", tag);
AddOpenTag(tag); AddOpenTag(tag);
...@@ -269,7 +269,7 @@ XMLAddContent(const char *content) ...@@ -269,7 +269,7 @@ XMLAddContent(const char *content)
} }
memset(buffer, 0, bufferSize); memset(buffer, 0, bufferSize);
snprintf(buffer, bufferSize, "%s", escapedContent); SDL_snprintf(buffer, bufferSize, "%s", escapedContent);
SDL_free((char *)escapedContent); SDL_free((char *)escapedContent);
const int size = SDL_strlen(buffer); const int size = SDL_strlen(buffer);
...@@ -312,9 +312,9 @@ XMLCloseElement(const char *tag) ...@@ -312,9 +312,9 @@ XMLCloseElement(const char *tag)
int breakOut = 0; int breakOut = 0;
if(SDL_strncmp(lowOpenTag, lowTag, compSize) == 0) { if(SDL_strncmp(lowOpenTag, lowTag, compSize) == 0) {
breakOut = 1; breakOut = 1;
snprintf(buffer, bufferSize, "</%s>", tag); SDL_snprintf(buffer, bufferSize, "</%s>", tag);
} else { } else {
snprintf(buffer, bufferSize, "</%s>", openTag->tag); SDL_snprintf(buffer, bufferSize, "</%s>", openTag->tag);
} }
SDL_free(lowOpenTag); SDL_free(lowOpenTag);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment