diff options
Diffstat (limited to 'plat/arm/board/tc/rss_ap_tests.c')
-rw-r--r-- | plat/arm/board/tc/rss_ap_tests.c | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/plat/arm/board/tc/rss_ap_tests.c b/plat/arm/board/tc/rss_ap_tests.c index b62043ece..8c40271ba 100644 --- a/plat/arm/board/tc/rss_ap_tests.c +++ b/plat/arm/board/tc/rss_ap_tests.c @@ -19,21 +19,28 @@ static struct test_suite_t test_suites[] = { {.freg = register_testsuite_measured_boot}, }; -static void run_tests(void) +/* + * Return 0 if we could run all tests. + * Note that this does not mean that all tests passed - only that they all run. + * One should then look at each individual test result inside the + * test_suites[].val field. + */ +static int run_tests(void) { enum test_suite_err_t ret; psa_status_t status; size_t i; + /* Initialize test environment. */ rss_comms_init(PLAT_RSS_AP_SND_MHU_BASE, PLAT_RSS_AP_RCV_MHU_BASE); mbedtls_init(); status = psa_crypto_init(); if (status != PSA_SUCCESS) { printf("\n\npsa_crypto_init failed (status = %d)\n", status); - assert(false); - plat_error_handler(-1); + return -1; } + /* Run all tests. */ for (i = 0; i < ARRAY_SIZE(test_suites); ++i) { struct test_suite_t *suite = &(test_suites[i]); @@ -41,22 +48,33 @@ static void run_tests(void) ret = run_testsuite(suite); if (ret != TEST_SUITE_ERR_NO_ERROR) { printf("\n\nError during executing testsuite '%s'.\n", suite->name); - assert(false); - plat_error_handler(-1); + return -1; } } printf("\nAll tests are run.\n"); + + return 0; } void run_platform_tests(void) { size_t i; + int ret; + int failures = 0; - run_tests(); + ret = run_tests(); + if (ret != 0) { + /* For some reason, we could not run all tests. */ + return ret; + } printf("\n\n"); - /* Print a summary of all the tests that had been run. */ + /* + * Print a summary of all the tests that had been run. + * Also count the number of tests failure and report that back to the + * caller. + */ printf("SUMMARY:\n"); for (i = 0; i < ARRAY_SIZE(test_suites); ++i) { @@ -67,6 +85,7 @@ void run_platform_tests(void) printf(" %s PASSED.\n", suite->name); break; case TEST_FAILED: + failures++; printf(" %s FAILED.\n", suite->name); break; case TEST_SKIPPED: @@ -79,4 +98,6 @@ void run_platform_tests(void) } printf("\n\n"); + + return failures; } |