From d2d36052d7f8d44e5609a869a18aca14b0faf886 Mon Sep 17 00:00:00 2001 From: Snaipe Date: Sun, 25 Oct 2015 10:02:39 +0100 Subject: [PATCH] Added XML format into the new report system --- src/core/runner.c | 1 + src/entry/main.c | 3 ++- src/log/output.h | 1 + src/log/xml.c | 37 +++++++++++++++++-------------------- 4 files changed, 21 insertions(+), 21 deletions(-) diff --git a/src/core/runner.c b/src/core/runner.c index 011050f..34ac6ce 100644 --- a/src/core/runner.c +++ b/src/core/runner.c @@ -350,6 +350,7 @@ struct criterion_test_set *criterion_initialize(void) { criterion_init_output(); criterion_register_output_provider("tap", tap_report); + criterion_register_output_provider("xml", xml_report); return criterion_init(); } diff --git a/src/entry/main.c b/src/entry/main.c index 34ca2aa..9ee14b9 100644 --- a/src/entry/main.c +++ b/src/entry/main.c @@ -133,7 +133,7 @@ int criterion_handle_args(int argc, char *argv[], bool handle_unknown_arg) { {"verbose", optional_argument, 0, 'b'}, {"version", no_argument, 0, 'v'}, {"tap", optional_argument, 0, 't'}, - {"xml", no_argument, 0, 'x'}, + {"xml", optional_argument, 0, 'x'}, {"help", no_argument, 0, 'h'}, {"list", no_argument, 0, 'l'}, {"ascii", no_argument, 0, 'k'}, @@ -206,6 +206,7 @@ int criterion_handle_args(int argc, char *argv[], bool handle_unknown_arg) { case 'p': criterion_options.pattern = optarg; break; #endif case 't': criterion_add_output("tap", DEF(optarg, "-")); break; + case 'x': criterion_add_output("xml", DEF(optarg, "-")); break; case 'l': do_list_tests = true; break; case 'v': do_print_version = true; break; case 'h': do_print_usage = true; break; diff --git a/src/log/output.h b/src/log/output.h index bd3f125..e332289 100644 --- a/src/log/output.h +++ b/src/log/output.h @@ -29,5 +29,6 @@ void process_all_output(struct criterion_global_stats *stats); void tap_report(FILE *f, struct criterion_global_stats *stats); +void xml_report(FILE *f, struct criterion_global_stats *stats); #endif /* !OUTPUT_H_ */ diff --git a/src/log/xml.c b/src/log/xml.c index fd7c9d6..3bce465 100644 --- a/src/log/xml.c +++ b/src/log/xml.c @@ -112,24 +112,25 @@ const char *get_status_string(struct criterion_test_stats *ts, return status; } -static void print_test(struct criterion_test_stats *ts, +static void print_test(FILE *f, + struct criterion_test_stats *ts, struct criterion_suite_stats *ss) { - criterion_important(XML_TEST_TEMPLATE_BEGIN, + fprintf(f, XML_TEST_TEMPLATE_BEGIN, ts->test->name, (size_t) (ts->passed_asserts + ts->failed_asserts), get_status_string(ts, ss) ); if (is_disabled(ts->test, ss->suite)) { - criterion_important(XML_TEST_SKIPPED); + fprintf(f, XML_TEST_SKIPPED); } else if (ts->crashed) { - criterion_important(XML_CRASH_MSG_ENTRY); + fprintf(f, XML_CRASH_MSG_ENTRY); } else if (ts->timed_out) { - criterion_important(XML_TIMEOUT_MSG_ENTRY); + fprintf(f, XML_TIMEOUT_MSG_ENTRY); } else { if (ts->failed) { - criterion_important(XML_TEST_FAILED_TEMPLATE_BEGIN, ts->failed_asserts); + fprintf(f, XML_TEST_FAILED_TEMPLATE_BEGIN, ts->failed_asserts); for (struct criterion_assert_stats *asrt = ts->asserts; asrt; asrt = asrt->next) { if (!asrt->passed) { bool sf = criterion_options.short_filename; @@ -137,26 +138,26 @@ static void print_test(struct criterion_test_stats *ts, char *saveptr = NULL; char *line = strtok_r(dup, "\n", &saveptr); - criterion_important(XML_FAILURE_MSG_ENTRY, + fprintf(f, XML_FAILURE_MSG_ENTRY, sf ? basename_compat(asrt->file) : asrt->file, asrt->line, line ); while ((line = strtok_r(NULL, "\n", &saveptr))) - criterion_important(" %s" LF, line); + fprintf(f, " %s" LF, line); free(dup); } } - criterion_important(XML_TEST_FAILED_TEMPLATE_END); + fprintf(f, XML_TEST_FAILED_TEMPLATE_END); } } - criterion_important(XML_TEST_TEMPLATE_END); + fprintf(f, XML_TEST_TEMPLATE_END); } -void xml_log_post_all(struct criterion_global_stats *stats) { - criterion_important(XML_BASE_TEMPLATE_BEGIN, +void xml_report(FILE *f, struct criterion_global_stats *stats) { + fprintf(f, XML_BASE_TEMPLATE_BEGIN, stats->nb_tests, stats->tests_failed, stats->tests_crashed, @@ -165,7 +166,7 @@ void xml_log_post_all(struct criterion_global_stats *stats) { for (struct criterion_suite_stats *ss = stats->suites; ss; ss = ss->next) { - criterion_important(XML_TESTSUITE_TEMPLATE_BEGIN, + fprintf(f, XML_TESTSUITE_TEMPLATE_BEGIN, ss->suite->name, ss->nb_tests, ss->tests_failed, @@ -175,15 +176,11 @@ void xml_log_post_all(struct criterion_global_stats *stats) { ); for (struct criterion_test_stats *ts = ss->tests; ts; ts = ts->next) { - print_test(ts, ss); + print_test(f, ts, ss); } - criterion_important(XML_TESTSUITE_TEMPLATE_END); + fprintf(f, XML_TESTSUITE_TEMPLATE_END); } - criterion_important(XML_BASE_TEMPLATE_END); + fprintf(f, XML_BASE_TEMPLATE_END); } - -struct criterion_output_provider xml_logging = { - .log_post_all = xml_log_post_all, -};