From 49952824fbf6a2fed37501e573452696ba9e236f Mon Sep 17 00:00:00 2001 From: Niklas Hauser Date: Fri, 11 Dec 2015 14:29:37 +0000 Subject: [PATCH] Handlers: Add specialized functions for all handlers. Most of them simply forward to the verbose handlers, however, should we decide differently in the future, existing unit tests will not have to be adapted. --- .../source/default_handlers.cpp" | 85 +++++++++++++------ "frameworks\\utest/utest/default_handlers.h" | 12 ++- 2 files changed, 71 insertions(+), 26 deletions(-) diff --git "a/frameworks\\utest/source/default_handlers.cpp" "b/frameworks\\utest/source/default_handlers.cpp" index 4a41610614..21d50149aa 100644 --- "a/frameworks\\utest/source/default_handlers.cpp" +++ "b/frameworks\\utest/source/default_handlers.cpp" @@ -21,6 +21,9 @@ using namespace utest::v1; +static status_t greentea_unknown_test_setup_handler(const size_t); +static void selftest_failure_handler(const failure_t reason); + const handlers_t utest::v1::verbose_continue_handlers = { verbose_test_setup_handler, verbose_test_teardown_handler, @@ -30,22 +33,38 @@ const handlers_t utest::v1::verbose_continue_handlers = { verbose_case_failure_handler }; const handlers_t utest::v1::greentea_abort_handlers = { - greentea_test_setup_handler, + greentea_unknown_test_setup_handler, greentea_test_teardown_handler, ignore_handler, - verbose_case_setup_handler, - verbose_case_teardown_handler, - greentea_case_failure_handler + greentea_case_setup_handler, + greentea_case_teardown_handler, + greentea_case_failure_abort_handler }; const handlers_t utest::v1::greentea_continue_handlers = { - greentea_test_setup_handler, + greentea_unknown_test_setup_handler, greentea_test_teardown_handler, ignore_handler, - verbose_case_setup_handler, - verbose_case_teardown_handler, - verbose_case_failure_handler + greentea_case_setup_handler, + greentea_case_teardown_handler, + greentea_case_failure_continue_handler }; +const handlers_t utest::v1::selftest_handlers = { + greentea_unknown_test_setup_handler, + greentea_test_teardown_handler, + selftest_failure_handler, + greentea_case_setup_handler, + greentea_case_teardown_handler, + greentea_case_failure_continue_handler +}; + +// --- SPECIAL HANDLERS --- +static status_t greentea_unknown_test_setup_handler(const size_t) { + printf(">>> I do not know how to tell greentea that the test started, since\n"); + printf(">>> you forgot to override the `test_setup_handler` in your specification.\n"); + + return STATUS_ABORT; +} static void selftest_failure_handler(const failure_t reason) { if (reason == FAILURE_ASSERTION) { printf(">>> failure with reason '%s (in selftest)'\n{{failure}}\n{{end}}\n", stringify(reason)); @@ -53,15 +72,7 @@ static void selftest_failure_handler(const failure_t reason) { } } -const handlers_t utest::v1::selftest_handlers = { - greentea_test_setup_handler, - greentea_test_teardown_handler, - selftest_failure_handler, - verbose_case_setup_handler, - verbose_case_teardown_handler, - verbose_case_failure_handler -}; - +// --- VERBOSE TEST HANDLERS --- status_t utest::v1::verbose_test_setup_handler(const size_t number_of_cases) { printf(">>> Running %u test cases...\n", number_of_cases); @@ -79,6 +90,12 @@ void utest::v1::verbose_test_teardown_handler(const size_t passed, const size_t if (failed) printf(">>> TESTS FAILED!\n"); } +void utest::v1::verbose_test_failure_handler(const failure_t reason) +{ + printf(">>> failure with reason '%s'\n", stringify(reason)); +} + +// --- VERBOSE CASE HANDLERS --- status_t utest::v1::verbose_case_setup_handler(const Case *const source, const size_t index_of_case) { printf("\n>>> Running case #%u: '%s'...\n", index_of_case + 1, source->get_description()); @@ -99,7 +116,7 @@ status_t utest::v1::verbose_case_teardown_handler(const Case *const source, cons status_t utest::v1::verbose_case_failure_handler(const Case *const /*source*/, const failure_t reason) { if (!(reason & FAILURE_ASSERTION)) { - printf(">>> failure with reason '%s'\n", stringify(reason)); + verbose_test_failure_handler(reason); } if (reason & FAILURE_TEARDOWN) return STATUS_ABORT; if (reason & FAILURE_IGNORE) return STATUS_IGNORE; @@ -107,13 +124,10 @@ status_t utest::v1::verbose_case_failure_handler(const Case *const /*source*/, c } - -status_t utest::v1::greentea_test_setup_handler(const size_t /*number_of_cases*/) +// --- GREENTEA HANDLERS --- +status_t utest::v1::greentea_test_setup_handler(const size_t number_of_cases) { - printf(">>> I do not know how to tell greentea that the test started, since\n"); - printf(">>> you forgot to override the `test_setup_handler` in your specification.\n"); - - return STATUS_ABORT; + return verbose_test_setup_handler(number_of_cases); } void utest::v1::greentea_test_teardown_handler(const size_t passed, const size_t failed, const failure_t failure) @@ -127,8 +141,29 @@ void utest::v1::greentea_test_teardown_handler(const size_t passed, const size_t printf("{{end}}\n"); } -status_t utest::v1::greentea_case_failure_handler(const Case *const source, const failure_t reason) +void utest::v1::greentea_test_failure_handler(const failure_t) +{ + // does nothing here +} + +// --- GREENTEA CASE HANDLERS --- +status_t utest::v1::greentea_case_setup_handler(const Case *const source, const size_t index_of_case) +{ + return verbose_case_setup_handler(source, index_of_case); +} + +status_t utest::v1::greentea_case_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t failure) +{ + return verbose_case_teardown_handler(source, passed, failed, failure); +} + +status_t utest::v1::greentea_case_failure_abort_handler(const Case *const source, const failure_t reason) { status_t status = verbose_case_failure_handler(source, reason); return (status & STATUS_IGNORE) ? STATUS_IGNORE : STATUS_ABORT; } + +status_t utest::v1::greentea_case_failure_continue_handler(const Case *const source, const failure_t reason) +{ + return verbose_case_failure_handler(source, reason); +} diff --git "a/frameworks\\utest/utest/default_handlers.h" "b/frameworks\\utest/utest/default_handlers.h" index 0e1e6d6a45..970b21da49 100644 --- "a/frameworks\\utest/utest/default_handlers.h" +++ "b/frameworks\\utest/utest/default_handlers.h" @@ -127,6 +127,8 @@ namespace v1 { status_t verbose_test_setup_handler (const size_t number_of_cases); /// Prints the number of tests that passed and failed with a reason if provided. void verbose_test_teardown_handler(const size_t passed, const size_t failed, const failure_t failure); + /// Prints the failure. + void verbose_test_failure_handler(const failure_t failure); /// Prints the index and description of the case being run and continues. status_t verbose_case_setup_handler (const Case *const source, const size_t index_of_case); @@ -140,9 +142,17 @@ namespace v1 { status_t greentea_test_setup_handler (const size_t number_of_cases); /// Calls `verbose_test_teardown_handler` and then prints the greentea failure and success and end strings. void greentea_test_teardown_handler(const size_t passed, const size_t failed, const failure_t failure); + /// Does nothing. Use this for forwards compatibility. + void greentea_test_failure_handler(const failure_t failure); + /// Forwards to `verbose_case_setup_handler`. Use this for forwards compatibility. + status_t greentea_case_setup_handler (const Case *const source, const size_t index_of_case); + /// Forwards to `verbose_case_teardown_handler`. Use this for forwards compatibility. + status_t greentea_case_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t failure); /// Calls `verbose_case_failure_handler` but then aborts. - status_t greentea_case_failure_handler (const Case *const source, const failure_t reason); + status_t greentea_case_failure_abort_handler (const Case *const source, const failure_t reason); + /// Forwards to `verbose_case_failure_handler`. Use this for forwards compatibility. + status_t greentea_case_failure_continue_handler (const Case *const source, const failure_t reason); /// The verbose default handlers that always continue on failure extern const handlers_t verbose_continue_handlers;