[Commits] SDL: Tiny changes to runner
libsdl.org revision control
commits-owner at libsdl.org
Mon Aug 29 10:19:54 PDT 2011
details: http://hg.libsdl.org/SDL/rev/57fc58008d76
changeset: 5662:57fc58008d76
user: Markus Kauppila <markus.kauppila at gmail.com>
date: Mon May 23 17:49:06 2011 +0300
description:
Tiny changes to runner
diffstat:
test/test-automation/.hgignore | 1 +
test/test-automation/asserts.c | 36 ++++++++++++++++++
test/test-automation/asserts.h | 1 -
test/test-automation/runner.c | 83 +++++++++++++++++++++++++++--------------
4 files changed, 92 insertions(+), 29 deletions(-)
diffs (197 lines):
diff -r 8e1868d46268 -r 57fc58008d76 test/test-automation/.hgignore
--- a/test/test-automation/.hgignore Mon May 23 13:14:09 2011 +0300
+++ b/test/test-automation/.hgignore Mon May 23 17:49:06 2011 +0300
@@ -21,3 +21,4 @@
# for Eclipse
.project
.cproject
+.settings
diff -r 8e1868d46268 -r 57fc58008d76 test/test-automation/asserts.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/test-automation/asserts.c Mon May 23 17:49:06 2011 +0300
@@ -0,0 +1,36 @@
+/*
+ Copyright (C) 2011 Markus Kauppila <markus.kauppila at gmail.com>
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+ arising from the use of this software.
+
+ Permission is granted to anyone to use this software for any purpose,
+ including commercial applications, and to alter it and redistribute it
+ freely, subject to the following restrictions:
+
+ 1. The origin of this software must not be misrepresented; you must not
+ claim that you wrote the original software. If you use this software
+ in a product, an acknowledgment in the product documentation would be
+ appreciated but is not required.
+ 2. Altered source versions must be plainly marked as such, and must not be
+ misrepresented as being the original software.
+ 3. This notice may not be removed or altered from any source distribution.
+*/
+
+#ifndef _ASSERTS_C
+#define _ASSERTS_C
+
+#include "asserts.h"
+
+#include <stdlib.h>
+
+void
+assertEquals(Uint32 expected, Uint32 actual)
+{
+ if(expected != actual) {
+ exit(1);
+ }
+}
+
+#endif
diff -r 8e1868d46268 -r 57fc58008d76 test/test-automation/asserts.h
--- a/test/test-automation/asserts.h Mon May 23 13:14:09 2011 +0300
+++ b/test/test-automation/asserts.h Mon May 23 17:49:06 2011 +0300
@@ -23,7 +23,6 @@
#include <SDL/SDL.h>
-
void assertEquals(Uint32 expected, Uint32 actual);
#endif
diff -r 8e1868d46268 -r 57fc58008d76 test/test-automation/runner.c
--- a/test/test-automation/runner.c Mon May 23 13:14:09 2011 +0300
+++ b/test/test-automation/runner.c Mon May 23 17:49:06 2011 +0300
@@ -18,48 +18,50 @@
3. This notice may not be removed or altered from any source distribution.
*/
-#include "SDL/SDL_loadso.h"
+#include "SDL/SDL.h"
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
+
int main(int argc, char *argv[]) {
- int pid = getpid();
- int testsFailed = 0, testsPassed = 0;
-
+
+ // Handle command line arguments
+
+ // print: Testing againts SDL version fuu (rev: bar)
+
+ int failureCount = 0, passCount = 0;
+
+ const Uint32 startTicks = SDL_GetTicks();
+
char *libName = "libtest.so";
- printf("%d: Loading .so containing tests\n", pid);
void *library = SDL_LoadObject(libName);
if(library == NULL) {
printf("Loading %s failed\n", libName);
printf("%s\n", SDL_GetError());
}
- printf("%d: Asking for the test case names\n", pid);
- char **(*suite)(void);
- suite = (char **(*)(void)) SDL_LoadFunction(library, "suite");
+ const char **(*suite)(void);
+ suite = (const char **(*)(void)) SDL_LoadFunction(library, "suite");
if(suite == NULL) {
- printf("%d: Retrieving test names failed, suite == NULL\n", pid);
+ printf("Retrieving test names failed, suite == NULL\n");
printf("%s\n", SDL_GetError());
} else {
- char **tests = suite();
+ const char **tests = suite();
char *testname = NULL;
int counter = 0;
- for(; (testname = tests[counter]); ++counter) {
+ for(; (testname = (char *) tests[counter]); ++counter) {
int childpid = fork();
+
if(childpid == 0) {
- pid = getpid();
-
- printf("%d: Loading test: %s\n", pid, testname);
-
void (*test)(void *arg);
test = (void (*)(void *)) SDL_LoadFunction(library, testname);
if(test == NULL) {
- printf("%d: Loading test failed, tests == NULL\n", pid);
+ printf("Loading test failed, tests == NULL\n");
printf("%s\n", SDL_GetError());
} else {
test(0x0);
@@ -68,30 +70,55 @@
} else {
int stat_lock = -1;
int child = wait(&stat_lock);
-
+
+ char *errorMsg = NULL;
+ int passed = -1;
if(WIFEXITED(stat_lock)) {
- int rv = WEXITSTATUS(stat_lock);
- printf("%d: %d exited normally with value %d\n", pid, child, rv);
+ int returnValue = WEXITSTATUS(stat_lock);
- testsPassed++;
+ if(returnValue == 0) {
+ passed = 1;
+ } else {
+ passed = 0;
+ }
} else if(WIFSIGNALED(stat_lock)) {
int signal = WTERMSIG(stat_lock);
- printf("%d: %d was killed by signal nro %d\n", pid, child, signal);
-
- testsFailed++;
+ //printf("%d: %d was killed by signal nro %d\n", pid, child, signal);
+ //errorMsg =
+ errorMsg = SDL_malloc(256 * sizeof(char));
+ sprintf(errorMsg, "was aborted due to signal nro %d", signal);
+
+ passed = 0;
} else if(WIFSTOPPED(stat_lock)) {
//int signal = WSTOPSIG(stat_lock);
//printf("%d: %d was stopped by signal nro %d\n", pid, child, signal);
}
+
+ printf("%s (in %s):", testname, libName);
+ if(passed) {
+ passCount++;
+ printf("\tok\n");
+ } else {
+ failureCount++;
+ printf("\tfailed\n");
+ if(errorMsg) {
+ printf("\t%s\n", errorMsg);
+ SDL_free(errorMsg);
+ }
+ }
}
}
}
- printf("%d: all tests executed\n", pid);
- printf("%d: %d tests passed\n", pid, testsPassed);
- printf("%d: %d tests failed\n", pid, testsFailed);
+ SDL_UnloadObject(library);
- SDL_UnloadObject(library);
-
+ const Uint32 endTicks = SDL_GetTicks();
+
+ printf("Ran %d tests in %0.3f seconds.\n", (passCount + failureCount), (endTicks-startTicks)/1000.0f);
+
+ printf("all tests executed\n");
+ printf("%d tests passed\n", passCount);
+ printf("%d tests failed\n", failureCount);
+
return 0;
}
More information about the commits
mailing list