]> git.ipfire.org Git - thirdparty/u-boot.git/commitdiff
test: Record and show the totals for all test runs
authorSimon Glass <sjg@chromium.org>
Mon, 20 Jan 2025 21:26:02 +0000 (14:26 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 24 Jan 2025 20:34:41 +0000 (14:34 -0600)
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@chromium.org>
include/test/test.h
test/cmd_ut.c
test/test-main.c

index f7087ab4eea91ad621d55caa5028f1b16ce64a50..bac43c81d63294bed95d8cbc05cc26e31323dfd9 100644 (file)
@@ -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;
index 80df954694fb04a6016b1114a17c5143661023d2..0b8bfe603b986b545089381b6978b88421f40286 100644 (file)
@@ -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;
 }
index d02ab791b5aed07c3143e09f500403c52a6aa6e9..22b9b46d9cd56bd9cf195f423db1c6c9b8386c66 100644 (file)
@@ -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;
 }