Marco Zecchini
/
Example_RTOS
Rtos API example
Embed:
(wiki syntax)
Show/hide line numbers
utest_greentea_handlers.cpp
00001 /**************************************************************************** 00002 * Copyright (c) 2015, ARM Limited, All Rights Reserved 00003 * SPDX-License-Identifier: Apache-2.0 00004 * 00005 * Licensed under the Apache License, Version 2.0 (the "License"); you may 00006 * not use this file except in compliance with the License. 00007 * You may obtain a copy of the License at 00008 * 00009 * http://www.apache.org/licenses/LICENSE-2.0 00010 * 00011 * Unless required by applicable law or agreed to in writing, software 00012 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 00013 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00014 * See the License for the specific language governing permissions and 00015 * limitations under the License. 00016 **************************************************************************** 00017 */ 00018 00019 #include "utest/utest_default_handlers.h" 00020 #include "utest/utest_case.h" 00021 #include "greentea-client/test_env.h" 00022 #include "utest/utest_stack_trace.h" 00023 #include "utest/utest_serial.h" 00024 00025 using namespace utest::v1; 00026 00027 static void selftest_failure_handler(const failure_t); 00028 static void test_failure_handler(const failure_t); 00029 00030 00031 const handlers_t utest::v1::greentea_abort_handlers = { 00032 default_greentea_test_setup_handler, 00033 greentea_test_teardown_handler, 00034 test_failure_handler, 00035 greentea_case_setup_handler, 00036 greentea_case_teardown_handler, 00037 greentea_case_failure_abort_handler 00038 }; 00039 00040 const handlers_t utest::v1::greentea_continue_handlers = { 00041 default_greentea_test_setup_handler, 00042 greentea_test_teardown_handler, 00043 test_failure_handler, 00044 greentea_case_setup_handler, 00045 greentea_case_teardown_handler, 00046 greentea_case_failure_continue_handler 00047 }; 00048 00049 const handlers_t utest::v1::selftest_handlers = { 00050 default_greentea_test_setup_handler, 00051 greentea_test_teardown_handler, 00052 selftest_failure_handler, 00053 greentea_case_setup_handler, 00054 greentea_case_teardown_handler, 00055 greentea_case_failure_continue_handler 00056 }; 00057 00058 00059 // --- SPECIAL HANDLERS --- 00060 00061 static void selftest_failure_handler(const failure_t failure) { 00062 UTEST_LOG_FUNCTION(); 00063 if (failure.location == LOCATION_TEST_SETUP || failure.location == LOCATION_TEST_TEARDOWN || failure.reason == REASON_ASSERTION) { 00064 verbose_test_failure_handler(failure); 00065 } 00066 if (failure.reason == REASON_ASSERTION) { 00067 UTEST_DUMP_TRACE 00068 GREENTEA_TESTSUITE_RESULT(false); 00069 while(1) ; 00070 } 00071 } 00072 00073 static void test_failure_handler(const failure_t failure) { 00074 UTEST_LOG_FUNCTION(); 00075 if (failure.location == LOCATION_TEST_SETUP || failure.location == LOCATION_TEST_TEARDOWN) { 00076 verbose_test_failure_handler(failure); 00077 GREENTEA_TESTSUITE_RESULT(false); 00078 while(1) ; 00079 } 00080 } 00081 00082 // --- GREENTEA HANDLERS --- 00083 00084 void utest::v1::greentea_testcase_notification_handler(const char *testcase) 00085 { 00086 UTEST_LOG_FUNCTION(); 00087 greentea_send_kv(GREENTEA_TEST_ENV_TESTCASE_NAME, testcase); 00088 } 00089 00090 utest::v1::status_t utest::v1::default_greentea_test_setup_handler(const size_t number_of_cases) 00091 { 00092 UTEST_LOG_FUNCTION(); 00093 GREENTEA_SETUP(UTEST_DEFAULT_GREENTEA_TIMEOUT, UTEST_DEFAULT_HOST_TEST_NAME); 00094 return greentea_test_setup_handler(number_of_cases); 00095 } 00096 00097 00098 utest::v1::status_t utest::v1::greentea_test_setup_handler(const size_t number_of_cases) 00099 { 00100 UTEST_LOG_FUNCTION(); 00101 greentea_send_kv(TEST_ENV_TESTCASE_COUNT, number_of_cases); 00102 return verbose_test_setup_handler(number_of_cases); 00103 } 00104 00105 void utest::v1::greentea_test_teardown_handler(const size_t passed, const size_t failed, const failure_t failure) 00106 { 00107 UTEST_LOG_FUNCTION(); 00108 verbose_test_teardown_handler(passed, failed, failure); 00109 greentea_send_kv(TEST_ENV_TESTCASE_SUMMARY, passed, failed); 00110 int result = !(failed || (failure.reason && !(failure.reason & REASON_IGNORE))); 00111 GREENTEA_TESTSUITE_RESULT(result); 00112 } 00113 00114 void utest::v1::greentea_test_failure_handler(const failure_t failure) 00115 { 00116 UTEST_LOG_FUNCTION(); 00117 verbose_test_failure_handler(failure); 00118 } 00119 00120 // --- GREENTEA CASE HANDLERS --- 00121 utest::v1::status_t utest::v1::greentea_case_setup_handler(const Case *const source, const size_t index_of_case) 00122 { 00123 UTEST_LOG_FUNCTION(); 00124 utest::v1::status_t status = verbose_case_setup_handler(source, index_of_case); 00125 greentea_send_kv(TEST_ENV_TESTCASE_START, source->get_description ()); 00126 return status; 00127 } 00128 00129 utest::v1::status_t utest::v1::greentea_case_teardown_handler(const Case *const source, const size_t passed, const size_t failed, const failure_t failure) 00130 { 00131 UTEST_LOG_FUNCTION(); 00132 greentea_send_kv(TEST_ENV_TESTCASE_FINISH, source->get_description (), passed, failed); 00133 return verbose_case_teardown_handler(source, passed, failed, failure); 00134 } 00135 00136 utest::v1::status_t utest::v1::greentea_case_failure_abort_handler(const Case *const source, const failure_t failure) 00137 { 00138 UTEST_LOG_FUNCTION(); 00139 utest::v1::status_t status = verbose_case_failure_handler(source, failure); 00140 return (status == STATUS_IGNORE) ? STATUS_IGNORE : STATUS_ABORT; 00141 } 00142 00143 utest::v1::status_t utest::v1::greentea_case_failure_continue_handler(const Case *const source, const failure_t failure) 00144 { 00145 UTEST_LOG_FUNCTION(); 00146 return verbose_case_failure_handler(source, failure); 00147 }
Generated on Sun Jul 17 2022 08:25:33 by 1.7.2