diff options
author | Jakub Hrozek <jakub.hrozek@posteo.se> | 2015-02-04 18:38:38 +0100 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2015-02-08 10:29:16 +0100 |
commit | b14b55efa6700f164dee6e129cc481375a605b0f (patch) | |
tree | 954e2e0fa6a92ba3fe02218f32c93017bc0cf66d | |
parent | 3e3d6be03d7c596e3ded99061ff70e2bed2a4b2a (diff) | |
download | cmocka-b14b55efa6700f164dee6e129cc481375a605b0f.zip cmocka-b14b55efa6700f164dee6e129cc481375a605b0f.tar.gz cmocka-b14b55efa6700f164dee6e129cc481375a605b0f.tar.bz2 |
cmocka: Add subunit message output type
Signed-off-by: Jakub Hrozek <jakub.hrozek@posteo.se>
-rw-r--r-- | include/cmocka.h | 1 | ||||
-rw-r--r-- | src/cmocka.c | 69 |
2 files changed, 67 insertions, 3 deletions
diff --git a/include/cmocka.h b/include/cmocka.h index efadd59..e3c733f 100644 --- a/include/cmocka.h +++ b/include/cmocka.h @@ -1954,6 +1954,7 @@ void vprint_error(const char* const format, va_list args) CMOCKA_PRINTF_ATTRIBUT enum cm_message_output { CM_OUTPUT_STDOUT, + CM_OUTPUT_SUBUNIT, }; /** diff --git a/src/cmocka.c b/src/cmocka.c index fc8c5a1..1047ff2 100644 --- a/src/cmocka.c +++ b/src/cmocka.c @@ -1865,6 +1865,23 @@ void print_error(const char* const format, ...) { } /* New formatter */ +static enum cm_message_output cm_get_output(void) +{ + enum cm_message_output output = global_msg_output; + char *env; + + env = getenv("CMOCKA_MESSAGE_OUTPUT"); + if (env != NULL) { + if (strcasecmp(env, "STDOUT") == 0) { + output = CM_OUTPUT_STDOUT; + } else if (strcasecmp(env, "SUBUNIT") == 0) { + output = CM_OUTPUT_SUBUNIT; + } + } + + return output; +} + enum cm_printf_type { PRINTF_TEST_START, PRINTF_TEST_SUCCESS, @@ -1934,12 +1951,44 @@ static void cmprintf_standard(enum cm_printf_type type, } } +static void cmprintf_subunit(enum cm_printf_type type, + const char *test_name, + const char *error_message) +{ + switch (type) { + case PRINTF_TEST_START: + print_message("test: %s\n", test_name); + break; + case PRINTF_TEST_SUCCESS: + print_message("success: %s\n", test_name); + break; + case PRINTF_TEST_FAILURE: + print_message("failure: %s", test_name); + if (error_message != NULL) { + print_message(" [\n%s]\n", error_message); + } + break; + case PRINTF_TEST_SKIPPED: + print_message("skip: %s\n", test_name); + break; + case PRINTF_TEST_ERROR: + print_message("error: %s [ %s ]", test_name, error_message); + break; + } +} + static void cmprintf_group_start(const size_t num_tests) { - switch (global_msg_output) { + enum cm_message_output output; + + output = cm_get_output(); + + switch (output) { case CM_OUTPUT_STDOUT: cmprintf_group_start_standard(num_tests); break; + case CM_OUTPUT_SUBUNIT: + break; } } @@ -1949,7 +1998,11 @@ static void cmprintf_group_finish(size_t total_executed, size_t total_errors, struct CMUnitTestState *cm_tests) { - switch (global_msg_output) { + enum cm_message_output output; + + output = cm_get_output(); + + switch (output) { case CM_OUTPUT_STDOUT: cmprintf_group_finish_standard(total_executed, total_passed, @@ -1957,6 +2010,8 @@ static void cmprintf_group_finish(size_t total_executed, total_errors, cm_tests); break; + case CM_OUTPUT_SUBUNIT: + break; } } @@ -1964,10 +2019,18 @@ static void cmprintf(enum cm_printf_type type, const char *test_name, const char *error_message) { - switch (global_msg_output) { + va_list ap; + enum cm_message_output output; + + output = cm_get_output(); + + switch (output) { case CM_OUTPUT_STDOUT: cmprintf_standard(type, test_name, error_message); break; + case CM_OUTPUT_SUBUNIT: + cmprintf_subunit(type, test_name, error_message); + break; } } |