blob: 663caf365e4010570fbb84ed0320452d40579fc2 [file] [log] [blame]
/*
* Copyright (c) 2018, Arm Limited. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <assert.h>
#include <debug.h>
#include <stdio.h>
#include <stdbool.h>
#include <tftf.h>
static const char *test_result_strings[TEST_RESULT_MAX] = {
"Skipped", "Passed", "Failed", "Crashed",
};
static const char *test_result_to_string(test_result_t result)
{
assert(TEST_RESULT_IS_VALID(result));
return test_result_strings[result];
}
void print_testsuite_start(const test_suite_t *testsuite)
{
mp_printf("--\n");
mp_printf("Running test suite '%s'\n", testsuite->name);
mp_printf("Description: %s\n", testsuite->description);
mp_printf("\n");
}
void print_test_start(const test_case_t *test)
{
mp_printf("> Executing '%s'\n", test->name);
}
void print_test_end(const test_case_t *test)
{
TESTCASE_RESULT result;
char output[TESTCASE_OUTPUT_MAX_SIZE];
tftf_testcase_get_result(test, &result, output);
mp_printf(" TEST COMPLETE %54s\n",
test_result_to_string(result.result));
if (strlen(output) != 0) {
mp_printf("%s", output);
}
mp_printf("\n");
}
void print_tests_summary(void)
{
int total_tests = 0;
int tests_stats[TEST_RESULT_MAX] = { 0 };
mp_printf("******************************* Summary *******************************\n");
/* Go through the list of test suites. */
for (int i = 0; testsuites[i].name != NULL; i++) {
bool passed = true;
mp_printf("> Test suite '%s'\n", testsuites[i].name);
const test_case_t *testcases = testsuites[i].testcases;
/* Go through the list of tests inside this test suite. */
for (int j = 0; testcases[j].name != NULL; j++) {
TESTCASE_RESULT result;
char output[TESTCASE_OUTPUT_MAX_SIZE];
if (tftf_testcase_get_result(&testcases[j], &result,
output) != STATUS_SUCCESS) {
mp_printf("Failed to get test result.\n");
continue;
}
assert(TEST_RESULT_IS_VALID(result.result));
/*
* Consider that a test suite passed if all of its
* tests passed or were skipped.
*/
if ((result.result != TEST_RESULT_SUCCESS) &&
(result.result != TEST_RESULT_SKIPPED)) {
passed = false;
}
total_tests++;
tests_stats[result.result]++;
}
mp_printf("%70s\n", passed ? "Passed" : "Failed");
}
mp_printf("=================================\n");
for (int i = TEST_RESULT_MIN; i < TEST_RESULT_MAX; i++) {
mp_printf("Tests %-8s: %d\n",
test_result_to_string(i), tests_stats[i]);
}
mp_printf("%-14s: %d\n", "Total tests", total_tests);
mp_printf("=================================\n");
}