[Commits] SDL: Refining the output of XML logger.
libsdl.org revision control
commits-owner at libsdl.org
Mon Aug 29 10:20:16 PDT 2011
details: http://hg.libsdl.org/SDL/rev/372709daa525
changeset: 5715:372709daa525
user: Markus Kauppila <markus.kauppila at gmail.com>
date: Mon Jun 27 16:41:45 2011 +0300
description:
Refining the output of XML logger.
diffstat:
test/test-automation/logger.h | 6 +-
test/test-automation/plain_logger.c | 2 +-
test/test-automation/plain_logger.h | 2 +-
test/test-automation/runner.c | 67 ++++++------
test/test-automation/xml.c | 14 +--
test/test-automation/xml_logger.c | 191 ++++++++++++++++++++++++++++++++++++--
test/test-automation/xml_logger.h | 2 +-
7 files changed, 222 insertions(+), 62 deletions(-)
diffs (480 lines):
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/logger.h
--- a/test/test-automation/logger.h Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/logger.h Mon Jun 27 16:41:45 2011 +0300
@@ -23,14 +23,11 @@
#include <time.h>
-// Function pointer to function which handles to output
-typedef int (*LogOutputFp)(const char *, ...);
-
/*!
* Generic logger interface
*
*/
-typedef void (*RunStartedFp)(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime);
+typedef void (*RunStartedFp)(int parameterCount, char *runnerParameters[], time_t eventTime);
typedef void (*RunEndedFp)(int testCount, int suiteCount, int testPassCount, int testFailCount,
time_t endTime, time_t totalRuntime);
@@ -54,7 +51,6 @@
typedef void (*LogFp)(const char *logMessage, time_t eventTime);
-int Output(const char *message, ...);
extern RunStartedFp RunStarted;
extern RunEndedFp RunEnded;
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/plain_logger.c
--- a/test/test-automation/plain_logger.c Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/plain_logger.c Mon Jun 27 16:41:45 2011 +0300
@@ -27,7 +27,7 @@
}
void
-PlainRunStarted(const char *runnerParameters, time_t eventTime)
+PlainRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime)
{
Output("Test run started");
Output("Given command line options: %s", "add options");
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/plain_logger.h
--- a/test/test-automation/plain_logger.h Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/plain_logger.h Mon Jun 27 16:41:45 2011 +0300
@@ -3,7 +3,7 @@
#include "logger.h"
-void PlainRunStarted(const char *runnerParameters, time_t eventTime);
+void PlainRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime);
void PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
time_t endTime, time_t totalRuntime);
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/runner.c
--- a/test/test-automation/runner.c Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/runner.c Mon Jun 27 16:41:45 2011 +0300
@@ -220,19 +220,19 @@
item->testCaseQuit = testCaseQuit;
// copy suite name
- int length = strlen(suiteReference->name) + 1;
+ int length = SDL_strlen(suiteReference->name) + 1;
item->suiteName = SDL_malloc(length);
- strcpy(item->suiteName, suiteReference->name);
+ strncpy(item->suiteName, suiteReference->name, length);
// copy test name
- length = strlen(testReference->name) + 1;
+ length = SDL_strlen(testReference->name) + 1;
item->testName = SDL_malloc(length);
- strcpy(item->testName, testReference->name);
+ strncpy(item->testName, testReference->name, length);
// copy test description
- length = strlen(testReference->description) + 1;
+ length = SDL_strlen(testReference->description) + 1;
item->description = SDL_malloc(length);
- strcpy(item->testName, testReference->name);
+ strncpy(item->description, testReference->description, length);
item->requirements = testReference->requirements;
item->timeout = testReference->timeout;
@@ -637,7 +637,8 @@
// print: Testing against SDL version fuu (rev: bar) if verbose == true
- int failureCount = 0, passCount = 0;
+ int totalTestfailureCount = 0, totalTestPassCount = 0;
+ int testFailureCount = 0, testPassCount = 0, testSkipCount = 0;
char *testSuiteName = NULL;
int suiteCounter = 0;
@@ -670,7 +671,7 @@
return 0;
}
- RunStarted(Output, NULL, 0);
+ RunStarted(argc, argv, 0);
char *currentSuiteName = NULL;
@@ -679,50 +680,50 @@
if(currentSuiteName == NULL) {
currentSuiteName = testItem->suiteName;
SuiteStarted(currentSuiteName, 0);
+
+ testFailureCount = testPassCount = 0;
+
+ suiteCounter++;
+ }
+ else if(strncmp(currentSuiteName, testItem->suiteName, NAME_BUFFER_SIZE) != 0) {
+ SuiteEnded(testPassCount, testFailureCount, testSkipCount, 0.0f, 0);
+
+ currentSuiteName = testItem->suiteName;
+ SuiteStarted(currentSuiteName, 0);
+
+ testFailureCount = testPassCount = 0;
+
+ suiteCounter++;
}
TestStarted(testItem->testName, testItem->suiteName,
testItem->description, 0);
int retVal = ExecuteTest(testItem);
-
if(retVal) {
- failureCount++;
- if(retVal == 2) {
- //printf("%s (in %s): FAILED -> No asserts\n", testItem->testName, testItem->suiteName);
- } else {
- //printf("%s (in %s): FAILED\n", testItem->testName, testItem->suiteName);
- }
+ totalTestfailureCount++;
+ testFailureCount++;
} else {
- passCount++;
- //printf("%s (in %s): ok\n", testItem->testName, testItem->suiteName);
+ totalTestPassCount++;
+ testPassCount++;
}
TestEnded(testItem->testName, testItem->suiteName, retVal, 0, 0);
-
- if(strncmp(currentSuiteName, testItem->suiteName, 100) != 0) {
- SuiteEnded(0, 0, 0, 0.0f, 0);
-
- currentSuiteName = testItem->suiteName;
- SuiteStarted(currentSuiteName, 0);
- }
}
- SuiteEnded(0, 0, 0, 0.0f, 0);
+ if(currentSuiteName) {
+ // \todo if no test are run, this will case incorrect nesting with
+ // xml output
+ SuiteEnded(testPassCount, testFailureCount, testSkipCount, 0.0f, 0);
+ }
UnloadTestCases(testCases);
UnloadTestSuites(suites);
const Uint32 endTicks = SDL_GetTicks();
- RunEnded(passCount + failureCount, 1 /*add suiteCount */,
- passCount, failureCount, 0, 0);
- /*
- printf("Ran %d tests in %0.5f seconds.\n", (passCount + failureCount), (endTicks-startTicks)/1000.0f);
-
- printf("%d tests passed\n", passCount);
- printf("%d tests failed\n", failureCount);
- */
+ RunEnded(totalTestPassCount + totalTestfailureCount, suiteCounter,
+ totalTestPassCount, totalTestfailureCount, 0, 0);
return 0;
}
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/xml.c
--- a/test/test-automation/xml.c Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/xml.c Mon Jun 27 16:41:45 2011 +0300
@@ -26,9 +26,6 @@
#include "xml.h"
-/*! Points the function which handles the output */
-static LogOutputFp logger = 0;
-
/*!
* Defines structure used for "counting" open XML-tags
*/
@@ -88,13 +85,6 @@
TagList *openTag = openTags;
SDL_free((char *)openTag->tag);
- /*
- int counter = 0;
- for(; counter < strlen(buffer); ++counter) {
- buffer[counter] = tolower(buffer[counter]);
- }
- */
-
openTags = openTags->next;
SDL_free(openTag);
} else {
@@ -188,7 +178,6 @@
strncpy(ret, string, size);
ret[size] = '\0';
- // turn the tag to lower case for case-insensitive comparation
int counter = 0;
for(; counter < size; ++counter) {
ret[counter] = tolower(ret[counter]);
@@ -283,6 +272,9 @@
char *ret = SDL_malloc(bufferSize);
memset(ret, 0, bufferSize);
+ // \todo check that element we're trying is actually open,
+ // otherwise it'll case nesting problems
+
// Close the open tags with proper nesting. Closes tags until it finds
// the given tag which is the last tag that will be closed
TagList *openTag = openTags;
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/xml_logger.c
--- a/test/test-automation/xml_logger.c Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/xml_logger.c Mon Jun 27 16:41:45 2011 +0300
@@ -60,10 +60,10 @@
* \param the XML element itself
*
*/
-void XMLOutputter(const int il, int EOL, const char *message) {
+void XMLOutputter(const int currentIdentLevel, int EOL, const char *message) {
int ident = 0;
- for( ; ident < il && prevEOL; ++ident) {
- printf(" ");
+ for( ; ident < currentIdentLevel && prevEOL; ++ident) {
+ printf("\t");
}
prevEOL = EOL;
@@ -73,24 +73,51 @@
} else {
printf("%s", message);
}
+
+ fflush(stdout);
}
void
-XMLRunStarted(const char *runnerParameters, time_t eventTime)
+XMLRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime)
{
char *output = XMLOpenDocument("testlog");
XMLOutputter(indentLevel++, YES, output);
SDL_free(output);
output = XMLOpenElement("parameters");
+ XMLOutputter(indentLevel++, YES, output);
+ SDL_free(output);
+
+ int counter = 0;
+ for(counter = 0; counter < parameterCount; counter++) {
+ char *parameter = runnerParameters[counter];
+
+ output = XMLOpenElement("parameter");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(parameter);
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("parameter");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+ }
+
+ output = XMLCloseElement("parameters");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ output = XMLOpenElement("eventTime");
XMLOutputter(indentLevel++, NO, output);
SDL_free(output);
- output = XMLAddContent("Add: runner parameter");
+ output = XMLAddContent(IntToString(eventTime));
XMLOutputter(indentLevel, NO, output);
SDL_free(output);
- output = XMLCloseElement("parameters");
+ output = XMLCloseElement("eventTime");
XMLOutputter(--indentLevel, YES, output);
SDL_free(output);
}
@@ -99,7 +126,88 @@
XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
time_t endTime, time_t totalRuntime)
{
- char *output = XMLCloseDocument("testlog");
+ // log suite count
+ char *output = XMLOpenElement("numSuites");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(suiteCount));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("numSuites");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log test count
+ output = XMLOpenElement("numTest");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(testCount));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("numTest");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log passed test count
+ output = XMLOpenElement("numPassedTests");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(testPassCount));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("numPassedTests");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log failed test count
+ output = XMLOpenElement("numFailedTests");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(testFailCount));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("numFailedTests");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+
+ // log end timte
+ output = XMLOpenElement("endTime");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(endTime));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("endTime");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log total runtime
+ output = XMLOpenElement("totalRuntime");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(totalRuntime));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("totalRuntime");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+
+
+ output = XMLCloseDocument("testlog");
XMLOutputter(--indentLevel, YES, output);
SDL_free(output);
}
@@ -128,11 +236,75 @@
XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
double endTime, time_t totalRuntime)
{
- char *output = XMLCloseElement("suite");
+ // log tests passed
+ char *output = XMLOpenElement("testsPassed");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(testsPassed));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("testsPassed");
XMLOutputter(--indentLevel, YES, output);
SDL_free(output);
- //! \todo endTime and totalRuntiem
+ // log tests failed
+ output = XMLOpenElement("testsFailed");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(testsFailed));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("testsFailed");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log tests skipped
+ output = XMLOpenElement("testsSkipped");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(testsSkipped));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("testsSkipped");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log tests skipped
+ output = XMLOpenElement("endTime");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(endTime));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("endTime");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+ // log total runtime
+ output = XMLOpenElement("totalRuntime");
+ XMLOutputter(indentLevel++, NO, output);
+ SDL_free(output);
+
+ output = XMLAddContent(IntToString(totalRuntime));
+ XMLOutputter(indentLevel, NO, output);
+ SDL_free(output);
+
+ output = XMLCloseElement("totalRuntime");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
+
+
+ output = XMLCloseElement("suite");
+ XMLOutputter(--indentLevel, YES, output);
+ SDL_free(output);
}
void
@@ -156,7 +328,6 @@
XMLOutputter(--indentLevel, YES, output);
SDL_free(output);
-
output = XMLOpenElement("description");
XMLOutputter(indentLevel++, NO, output);
SDL_free(output);
diff -r d35019d2dcfb -r 372709daa525 test/test-automation/xml_logger.h
--- a/test/test-automation/xml_logger.h Mon Jun 27 11:53:14 2011 +0300
+++ b/test/test-automation/xml_logger.h Mon Jun 27 16:41:45 2011 +0300
@@ -3,7 +3,7 @@
#include "logger.h"
-void XMLRunStarted(const char *runnerParameters, time_t eventTime);
+void XMLRunStarted(int parameterCount, char *runnerParameters[], time_t eventTime);
void XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
time_t endTime, time_t totalRuntime);
More information about the commits
mailing list