diff options
Diffstat (limited to 'plat/arm/board/tc/rss_ap_tests.c')
-rw-r--r-- | plat/arm/board/tc/rss_ap_tests.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/plat/arm/board/tc/rss_ap_tests.c b/plat/arm/board/tc/rss_ap_tests.c index b62043ece..7d254e65a 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,18 +48,24 @@ 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; - run_tests(); + ret = run_tests(); + if (ret != 0) { + /* For some reason, we could not run all tests. */ + return ret; + } printf("\n\n"); @@ -79,4 +92,6 @@ void run_platform_tests(void) } printf("\n\n"); + + return 0; } |