+2004-08-18 hugo303
+
+ * src/check.c, src/check.h.in, src/check_impl.h, src/check_log.c,
+ src/check_log.h, src/check_print.c, src/check_print.h,
+ src/check_run.c, tests/Makefile.am, tests/check_check_log.c,
+ tests/ex_xml_output.c, tests/test_xml_output.sh:
+ Added support for XML output of the test results, courtesy of
+ Frederic Peters.
+
2004-08-18 hugo303
* src/check_run.c, tests/check_check_fixture.c: Fixed setup bug
void tr_xmlprint (FILE *file, TestResult *tr, enum print_output print_mode)
{
char result[10];
+ char *path_name;
+ char *file_name;
+ char *slash;
switch (tr->rtype) {
case CK_PASS:
strcpy(result, "error");
break;
}
+
+ slash = strrchr(tr->file, '/');
+ if (slash == NULL) {
+ path_name = (char*)".";
+ file_name = tr->file;
+ } else {
+ path_name = strdup(tr->file);
+ path_name[slash - tr->file] = 0; /* Terminate the temporary string. */
+ file_name = slash + 1;
+ }
+
+
fprintf(file, " <test result=\"%s\">\n", result);
- fprintf(file, " <fn>%s:%d</fn>\n", tr->file, tr->line);
+ fprintf(file, " <path>%s</path>\n", path_name);
+ fprintf(file, " <fn>%s:%d</fn>\n", file_name, tr->line);
fprintf(file, " <id>%s</id>\n", tr->tname);
fprintf(file, " <description>%s</description>\n", tr->tcname);
fprintf(file, " <message>%s</message>\n", tr->msg);
fprintf(file, " </test>\n");
+
+ if (slash != NULL) {
+ free(path_name);
+ }
}
enum print_output get_env_printmode (void)
</testsuites>"
./ex_xml_output > /dev/null
-actual=`cat test.log.xml | grep -v duration | grep -v datetime`
+actual=`cat test.log.xml | grep -v \<duration\> | grep -v \<datetime\> | grep -v \<path\>`
if [ x"${expected}" != x"${actual}" ]; then
- echo "Problem with ex_log_output ${3}";
+ echo "Problem with ex_xml_output ${3}";
echo "Expected:";
echo "${expected}";
echo "Got:";