[PATCH v2 40/44] test: Record and show the totals for all test runs
Simon Glass
sjg at chromium.org
Mon Jan 20 22:26:02 CET 2025
With 'ut all' multiple test suites are run. Add a way to collect totals
and show them at the end.
Signed-off-by: Simon Glass <sjg at chromium.org>
---
Changes in v2:
- Add missing comment for 'total'
include/test/test.h | 4 ++++
test/cmd_ut.c | 1 +
test/test-main.c | 7 +++++++
3 files changed, 12 insertions(+)
diff --git a/include/test/test.h b/include/test/test.h
index f7087ab4eea..bac43c81d63 100644
--- a/include/test/test.h
+++ b/include/test/test.h
@@ -27,6 +27,8 @@ struct ut_stats {
* struct unit_test_state - Entire state of test system
*
* @cur: Statistics for the current run
+ * @total: Statistics for all test runs
+ * @run_count: Number of times ut_run_list() has been called
* @start: Store the starting mallinfo when doing leak test
* @of_live: true to use livetree if available, false to use flattree
* @of_root: Record of the livetree root node (used for setting up tests)
@@ -48,6 +50,8 @@ struct ut_stats {
*/
struct unit_test_state {
struct ut_stats cur;
+ struct ut_stats total;
+ int run_count;
struct mallinfo start;
struct device_node *of_root;
bool of_live;
diff --git a/test/cmd_ut.c b/test/cmd_ut.c
index 80df954694f..0b8bfe603b9 100644
--- a/test/cmd_ut.c
+++ b/test/cmd_ut.c
@@ -206,6 +206,7 @@ static int do_ut_all(struct unit_test_state *uts, struct cmd_tbl *cmdtp,
any_fail = retval;
}
}
+ ut_report(&uts->total, uts->run_count);
return any_fail;
}
diff --git a/test/test-main.c b/test/test-main.c
index d02ab791b5a..22b9b46d9cd 100644
--- a/test/test-main.c
+++ b/test/test-main.c
@@ -694,6 +694,8 @@ int ut_run_list(struct unit_test_state *uts, const char *category,
bool has_dm_tests = false;
int ret;
+ memset(&uts->cur, '\0', sizeof(struct ut_stats));
+
if (!CONFIG_IS_ENABLED(OF_PLATDATA) &&
ut_list_has_dm_tests(tests, count, prefix, select_name)) {
has_dm_tests = true;
@@ -734,5 +736,10 @@ int ut_run_list(struct unit_test_state *uts, const char *category,
if (ret == -ENOENT)
printf("Test '%s' not found\n", select_name);
+ uts->total.skip_count += uts->cur.skip_count;
+ uts->total.fail_count += uts->cur.fail_count;
+ uts->total.test_count += uts->cur.test_count;
+ uts->run_count++;
+
return ret;
}
--
2.43.0
More information about the U-Boot
mailing list