Added identation to the output of XML logger.
This commit is contained in:
parent
2e8932b12e
commit
2a486b279b
8 changed files with 215 additions and 107 deletions
|
@ -57,25 +57,6 @@ SetupPlainLogger()
|
||||||
Log = PlainLog;
|
Log = PlainLog;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*!
|
|
||||||
* Prints the given message to stderr. Function adds nesting
|
|
||||||
* to the output.
|
|
||||||
*
|
|
||||||
* \return Possible error value (\todo)
|
|
||||||
*/
|
|
||||||
int
|
|
||||||
LogGenericOutput(const char *message, ...)
|
|
||||||
{
|
|
||||||
va_list list;
|
|
||||||
va_start(list, message);
|
|
||||||
|
|
||||||
char buffer[1024];
|
|
||||||
SDL_vsnprintf(buffer, sizeof(buffer), message, list);
|
|
||||||
|
|
||||||
fprintf(stderr, "%s\n", buffer);
|
|
||||||
fflush(stderr);
|
|
||||||
}
|
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
/*!
|
/*!
|
||||||
* Test app for logging functionality
|
* Test app for logging functionality
|
||||||
|
@ -91,7 +72,7 @@ main(int argc, char *argv[])
|
||||||
SetupPlainLogger();
|
SetupPlainLogger();
|
||||||
}
|
}
|
||||||
|
|
||||||
RunStarted(LogGenericOutput, "some_<data_>here&here", 0);
|
RunStarted(Output, "some_<data_>here&here", 0);
|
||||||
SuiteStarted("Suite data here", 0);
|
SuiteStarted("Suite data here", 0);
|
||||||
|
|
||||||
TestStarted("test1", "suite", "desc", 0);
|
TestStarted("test1", "suite", "desc", 0);
|
||||||
|
|
|
@ -54,7 +54,7 @@ typedef void (*AssertSummaryFp)(int numAsserts, int numAssertsFailed, int numAss
|
||||||
|
|
||||||
typedef void (*LogFp)(const char *logMessage, time_t eventTime);
|
typedef void (*LogFp)(const char *logMessage, time_t eventTime);
|
||||||
|
|
||||||
int LogGenericOutput(const char *message, ...);
|
int Output(const char *message, ...);
|
||||||
|
|
||||||
extern RunStartedFp RunStarted;
|
extern RunStartedFp RunStarted;
|
||||||
extern RunEndedFp RunEnded;
|
extern RunEndedFp RunEnded;
|
||||||
|
|
|
@ -4,53 +4,69 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#include <SDL/SDL.h>
|
||||||
|
|
||||||
#include "plain_logger.h"
|
#include "plain_logger.h"
|
||||||
|
|
||||||
|
|
||||||
LogOutputFp logger = 0;
|
/*!
|
||||||
|
* Pritns out the output of the logger
|
||||||
|
* \return Possible error value (\todo)
|
||||||
|
*/
|
||||||
|
int
|
||||||
|
Output(const char *message, ...)
|
||||||
|
{
|
||||||
|
va_list list;
|
||||||
|
va_start(list, message);
|
||||||
|
|
||||||
|
char buffer[1024];
|
||||||
|
SDL_vsnprintf(buffer, sizeof(buffer), message, list);
|
||||||
|
|
||||||
|
fprintf(stderr, "%s\n", buffer);
|
||||||
|
fflush(stderr);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime)
|
PlainRunStarted(const char *runnerParameters, time_t eventTime)
|
||||||
{
|
{
|
||||||
logger = outputFn;
|
Output("Test run started");
|
||||||
logger("Test run started");
|
Output("Given command line options: %s", "add options");
|
||||||
logger("Given command line options: %s", "add options");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
||||||
time_t endTime, time_t totalRuntime)
|
time_t endTime, time_t totalRuntime)
|
||||||
{
|
{
|
||||||
logger("Ran %d tests in %0.5f seconds.", testCount, totalRuntime);
|
Output("Ran %d tests in %0.5f seconds.", testCount, totalRuntime);
|
||||||
|
|
||||||
logger("%d tests passed", testPassCount);
|
Output("%d tests passed", testPassCount);
|
||||||
logger("%d tests failed", testFailCount);
|
Output("%d tests failed", testFailCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainSuiteStarted(const char *suiteName, time_t eventTime)
|
PlainSuiteStarted(const char *suiteName, time_t eventTime)
|
||||||
{
|
{
|
||||||
logger("Executing tests in %s", suiteName);
|
Output("Executing tests in %s", suiteName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
PlainSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
||||||
double endTime, time_t totalRuntime)
|
double endTime, time_t totalRuntime)
|
||||||
{
|
{
|
||||||
logger("Suite executed. %d passed, %d failed and %d skipped", testsPassed, testsFailed, testsSkipped);
|
Output("Suite executed. %d passed, %d failed and %d skipped", testsPassed, testsFailed, testsSkipped);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
|
PlainTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
|
||||||
{
|
{
|
||||||
logger("test %s (in %s) started", testName, suiteName);
|
Output("test %s (in %s) started", testName, suiteName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainTestEnded(const char *testName, const char *suiteName,
|
PlainTestEnded(const char *testName, const char *suiteName,
|
||||||
int testResult, time_t endTime, time_t totalRuntime)
|
int testResult, time_t endTime, time_t totalRuntime)
|
||||||
{
|
{
|
||||||
logger("%s: ok", testName);
|
Output("%s: ok", testName);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -58,19 +74,19 @@ PlainAssert(const char *assertName, int assertResult, const char *assertMessage,
|
||||||
time_t eventTime)
|
time_t eventTime)
|
||||||
{
|
{
|
||||||
const char *result = (assertResult) ? "passed" : "failed";
|
const char *result = (assertResult) ? "passed" : "failed";
|
||||||
logger("%s %d: %s", assertName, assertResult, assertMessage);
|
Output("%s %d: %s", assertName, assertResult, assertMessage);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass)
|
PlainAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass)
|
||||||
{
|
{
|
||||||
logger("Asserts:%d", numAsserts);
|
Output("Asserts:%d", numAsserts);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PlainLog(const char *logMessage, time_t eventTime)
|
PlainLog(const char *logMessage, time_t eventTime)
|
||||||
{
|
{
|
||||||
logger("%s %d", logMessage, eventTime);
|
Output("%s %d", logMessage, eventTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
||||||
void PlainRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime);
|
void PlainRunStarted(const char *runnerParameters, time_t eventTime);
|
||||||
|
|
||||||
void PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
void PlainRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
||||||
time_t endTime, time_t totalRuntime);
|
time_t endTime, time_t totalRuntime);
|
||||||
|
|
|
@ -670,7 +670,7 @@ main(int argc, char *argv[])
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
RunStarted(LogGenericOutput, NULL, 0);
|
RunStarted(Output, NULL, 0);
|
||||||
|
|
||||||
char *currentSuiteName = NULL;
|
char *currentSuiteName = NULL;
|
||||||
|
|
||||||
|
@ -708,6 +708,8 @@ main(int argc, char *argv[])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SuiteEnded(0, 0, 0, 0.0f, 0);
|
||||||
|
|
||||||
UnloadTestCases(testCases);
|
UnloadTestCases(testCases);
|
||||||
UnloadTestSuites(suites);
|
UnloadTestSuites(suites);
|
||||||
|
|
||||||
|
|
|
@ -153,8 +153,14 @@ const char *EscapeString(const char *string) {
|
||||||
while(token) {
|
while(token) {
|
||||||
char *nextToken = strtok(NULL, character);
|
char *nextToken = strtok(NULL, character);
|
||||||
|
|
||||||
//! \todo use strncat and count the bytes left in the buffer
|
int bytesLeft = bufferSize - SDL_strlen(buffer);
|
||||||
strcat(buffer, token);
|
if(bytesLeft) {
|
||||||
|
strncat(buffer, token, bytesLeft);
|
||||||
|
} else {
|
||||||
|
// \! todo there's probably better way to report an error?
|
||||||
|
fprintf(stderr, "xml.c | EscapingString: Buffer is full");
|
||||||
|
}
|
||||||
|
|
||||||
if(nextToken)
|
if(nextToken)
|
||||||
strcat(buffer, entity);
|
strcat(buffer, entity);
|
||||||
|
|
||||||
|
@ -211,7 +217,7 @@ static char buffer[bufferSize];
|
||||||
char *
|
char *
|
||||||
XMLOpenDocument(const char *rootTag)
|
XMLOpenDocument(const char *rootTag)
|
||||||
{
|
{
|
||||||
const char *doctype = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
|
const char *doctype = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n";
|
||||||
|
|
||||||
memset(buffer, 0, bufferSize);
|
memset(buffer, 0, bufferSize);
|
||||||
snprintf(buffer, bufferSize, "<%s>", rootTag);
|
snprintf(buffer, bufferSize, "<%s>", rootTag);
|
||||||
|
@ -303,8 +309,13 @@ XMLCloseElement(const char *tag)
|
||||||
SDL_free(lowOpenTag);
|
SDL_free(lowOpenTag);
|
||||||
SDL_free(lowTag);
|
SDL_free(lowTag);
|
||||||
|
|
||||||
// \todo use strNcat
|
int bytesLeft = bufferSize - SDL_strlen(ret);
|
||||||
strcat(ret, buffer);
|
if(bytesLeft) {
|
||||||
|
strncat(ret, buffer, bytesLeft);
|
||||||
|
} else {
|
||||||
|
// \! todo there's probably better way to report an error?
|
||||||
|
fprintf(stderr, "xml.c | XMLCloseElement: Buffer is full");
|
||||||
|
}
|
||||||
|
|
||||||
RemoveOpenTag(openTag->tag);
|
RemoveOpenTag(openTag->tag);
|
||||||
|
|
||||||
|
|
|
@ -28,27 +28,70 @@
|
||||||
|
|
||||||
#include "xml_logger.h"
|
#include "xml_logger.h"
|
||||||
|
|
||||||
LogOutputFp logger;
|
/*!
|
||||||
|
* Helper functions. Turns the given integer in to a string
|
||||||
|
*
|
||||||
|
* \param integer The converted integer
|
||||||
|
* \returns Given integer as string
|
||||||
|
*/
|
||||||
|
char *IntToString(const int integer) {
|
||||||
|
static char buffer[sizeof(int) * 8 + 1]; // malloc might work better
|
||||||
|
memset(buffer, 0, sizeof(buffer));
|
||||||
|
|
||||||
|
SDL_snprintf(buffer, sizeof(buffer), "%d", integer);
|
||||||
|
|
||||||
|
return buffer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int indentLevel;
|
||||||
|
|
||||||
|
//! Constants for XMLOuputters EOL parameter
|
||||||
|
#define YES 1
|
||||||
|
#define NO 0
|
||||||
|
|
||||||
|
/*! Controls printing the identation in relation to line breaks */
|
||||||
|
static int prevEOL = YES;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Prints out the given xml element etc.
|
||||||
|
*
|
||||||
|
* \param identLevel the indent level of the message
|
||||||
|
* \param EOL will it print end of line character or not
|
||||||
|
* \param the XML element itself
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
void XMLOutputter(const int il, int EOL, const char *message) {
|
||||||
|
int ident = 0;
|
||||||
|
for( ; ident < il && prevEOL; ++ident) {
|
||||||
|
printf(" ");
|
||||||
|
}
|
||||||
|
|
||||||
|
prevEOL = EOL;
|
||||||
|
|
||||||
|
if(EOL) {
|
||||||
|
printf("%s\n", message);
|
||||||
|
} else {
|
||||||
|
printf("%s", message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
XMLRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime)
|
XMLRunStarted(const char *runnerParameters, time_t eventTime)
|
||||||
{
|
{
|
||||||
logger = outputFn;
|
|
||||||
|
|
||||||
char *output = XMLOpenDocument("testlog");
|
char *output = XMLOpenDocument("testlog");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLOpenElement("parameters");
|
output = XMLOpenElement("parameters");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLAddContent("Add: runner parameter");
|
output = XMLAddContent("Add: runner parameter");
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("parameters");
|
output = XMLCloseElement("parameters");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,7 +100,7 @@ XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
||||||
time_t endTime, time_t totalRuntime)
|
time_t endTime, time_t totalRuntime)
|
||||||
{
|
{
|
||||||
char *output = XMLCloseDocument("testlog");
|
char *output = XMLCloseDocument("testlog");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -65,16 +108,19 @@ void
|
||||||
XMLSuiteStarted(const char *suiteName, time_t eventTime)
|
XMLSuiteStarted(const char *suiteName, time_t eventTime)
|
||||||
{
|
{
|
||||||
char *output = XMLOpenElement("suite");
|
char *output = XMLOpenElement("suite");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLOpenElement("eventtime");
|
output = XMLOpenElement("eventTime");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
//XMLAddContent(evenTime);
|
output = XMLAddContent(IntToString(eventTime));
|
||||||
output = XMLCloseElement("eventtime");
|
XMLOutputter(indentLevel, NO, output);
|
||||||
logger(output);
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLCloseElement("eventTime");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -83,51 +129,56 @@ XMLSuiteEnded(int testsPassed, int testsFailed, int testsSkipped,
|
||||||
double endTime, time_t totalRuntime)
|
double endTime, time_t totalRuntime)
|
||||||
{
|
{
|
||||||
char *output = XMLCloseElement("suite");
|
char *output = XMLCloseElement("suite");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
|
//! \todo endTime and totalRuntiem
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
XMLTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
|
XMLTestStarted(const char *testName, const char *suiteName, const char *testDescription, time_t startTime)
|
||||||
{
|
{
|
||||||
char * output = XMLOpenElement("test");
|
char * output = XMLOpenElement("test");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
//Attribute attribute = {"test", "value"};
|
//Attribute attribute = {"test", "value"};
|
||||||
//XMLOpenElementWithAttribute("name", &attribute);
|
//XMLOpenElementWithAttribute("name", &attribute);
|
||||||
output = XMLOpenElement("name");
|
output = XMLOpenElement("name");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLAddContent(testName);
|
output = XMLAddContent(testName);
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("name");
|
output = XMLCloseElement("name");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
|
|
||||||
output = XMLOpenElement("description");
|
output = XMLOpenElement("description");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLAddContent(testDescription);
|
output = XMLAddContent(testDescription);
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("description");
|
output = XMLCloseElement("description");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLOpenElement("starttime");
|
output = XMLOpenElement("startTime");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
//XMLAddContent(startTime);
|
XMLAddContent(IntToString(startTime));
|
||||||
output = XMLCloseElement("starttime");
|
XMLOutputter(indentLevel, NO, output);
|
||||||
logger(output);
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLCloseElement("startTime");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +187,7 @@ XMLTestEnded(const char *testName, const char *suiteName,
|
||||||
int testResult, time_t endTime, time_t totalRuntime)
|
int testResult, time_t endTime, time_t totalRuntime)
|
||||||
{
|
{
|
||||||
char *output = XMLOpenElement("result");
|
char *output = XMLOpenElement("result");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
if(testResult) {
|
if(testResult) {
|
||||||
|
@ -145,20 +196,22 @@ XMLTestEnded(const char *testName, const char *suiteName,
|
||||||
} else {
|
} else {
|
||||||
output = XMLAddContent("failed");
|
output = XMLAddContent("failed");
|
||||||
}
|
}
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
} else {
|
} else {
|
||||||
output = XMLAddContent("passed");
|
output = XMLAddContent("passed");
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
}
|
||||||
|
|
||||||
|
output = XMLCloseElement("result");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
}
|
//! \todo add endTime and TotalRuntime
|
||||||
output = XMLCloseElement("result");
|
|
||||||
logger(output);
|
|
||||||
SDL_free(output);
|
|
||||||
|
|
||||||
output = XMLCloseElement("test");
|
output = XMLCloseElement("test");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,23 +220,50 @@ XMLAssert(const char *assertName, int assertResult, const char *assertMessage,
|
||||||
time_t eventTime)
|
time_t eventTime)
|
||||||
{
|
{
|
||||||
char *output = XMLOpenElement("assert");
|
char *output = XMLOpenElement("assert");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
|
// log assert result
|
||||||
output = XMLOpenElement("result");
|
output = XMLOpenElement("result");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLAddContent((assertResult) ? "pass" : "failure");
|
output = XMLAddContent((assertResult) ? "pass" : "failure");
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("result");
|
output = XMLCloseElement("result");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
// log assert message
|
||||||
|
output = XMLOpenElement("message");
|
||||||
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLAddContent(assertMessage);
|
||||||
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLCloseElement("message");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
// log event time
|
||||||
|
output = XMLOpenElement("eventTime");
|
||||||
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLAddContent(IntToString(eventTime));
|
||||||
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLCloseElement("eventTime");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("assert");
|
output = XMLCloseElement("assert");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,50 +271,47 @@ void
|
||||||
XMLAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass)
|
XMLAssertSummary(int numAsserts, int numAssertsFailed, int numAssertsPass)
|
||||||
{
|
{
|
||||||
char *output = XMLOpenElement("assertSummary");
|
char *output = XMLOpenElement("assertSummary");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLOpenElement("assertCount");
|
output = XMLOpenElement("assertCount");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
//XMLAddContent() \todo add string conversion
|
output = XMLAddContent(IntToString(numAsserts));
|
||||||
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("assertCount");
|
output = XMLCloseElement("assertCount");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLOpenElement("assertsPassed");
|
output = XMLOpenElement("assertsPassed");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
const int bufferSize = sizeof(int) * 8 + 1;
|
output = XMLAddContent(IntToString(numAssertsPass));
|
||||||
//char buffer[bufferSize];
|
XMLOutputter(indentLevel, NO, output);
|
||||||
char *buffer = SDL_malloc(bufferSize);
|
SDL_free(output);
|
||||||
memset(buffer, 'a', bufferSize);
|
|
||||||
|
|
||||||
//SDL_vsnprintf(buffer, bufferSize, "%d", numAssertsPass);
|
|
||||||
snprintf(buffer, sizeof(buffer), "%d", numAssertsPass);
|
|
||||||
buffer[3] = 'a';
|
|
||||||
//printf("DEBUG |Ê%s == %d of size %d", buffer, numAssertsPass, bufferSize);
|
|
||||||
XMLAddContent(buffer);
|
|
||||||
|
|
||||||
output = XMLCloseElement("assertsPassed");
|
output = XMLCloseElement("assertsPassed");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLOpenElement("assertsFailed");
|
output = XMLOpenElement("assertsFailed");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
//XMLAddContent() \todo add string conversion
|
output = XMLAddContent(IntToString(numAsserts));
|
||||||
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("assertsFailed");
|
output = XMLCloseElement("assertsFailed");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("assertSummary");
|
output = XMLCloseElement("assertSummary");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -242,15 +319,36 @@ void
|
||||||
XMLLog(const char *logMessage, time_t eventTime)
|
XMLLog(const char *logMessage, time_t eventTime)
|
||||||
{
|
{
|
||||||
char *output = XMLOpenElement("log");
|
char *output = XMLOpenElement("log");
|
||||||
logger(output);
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
// log message
|
||||||
|
output = XMLOpenElement("message");
|
||||||
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLAddContent(logMessage);
|
output = XMLAddContent(logMessage);
|
||||||
logger(output);
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLCloseElement("message");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
// log eventTime
|
||||||
|
output = XMLOpenElement("eventTime");
|
||||||
|
XMLOutputter(indentLevel++, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLAddContent(IntToString(eventTime));
|
||||||
|
XMLOutputter(indentLevel, NO, output);
|
||||||
|
SDL_free(output);
|
||||||
|
|
||||||
|
output = XMLCloseElement("eventTime");
|
||||||
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
|
|
||||||
output = XMLCloseElement("log");
|
output = XMLCloseElement("log");
|
||||||
logger(output);
|
XMLOutputter(--indentLevel, YES, output);
|
||||||
SDL_free(output);
|
SDL_free(output);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include "logger.h"
|
#include "logger.h"
|
||||||
|
|
||||||
void XMLRunStarted(LogOutputFp outputFn, const char *runnerParameters, time_t eventTime);
|
void XMLRunStarted(const char *runnerParameters, time_t eventTime);
|
||||||
|
|
||||||
void XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
void XMLRunEnded(int testCount, int suiteCount, int testPassCount, int testFailCount,
|
||||||
time_t endTime, time_t totalRuntime);
|
time_t endTime, time_t totalRuntime);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue