[PATCH 25/28] test: Allow running a selection of suites

Simon Glass sjg at chromium.org
Mon Jan 20 22:53:25 CET 2025


Enhance the ut command to accept a comma-separated list of test suites
to run. Report the summary information for these at the end.

Signed-off-by: Simon Glass <sjg at chromium.org>
---

 test/cmd_ut.c               | 32 ++++++++++++++++++++------------
 test/py/tests/test_suite.py |  5 +++++
 test/test-main.c            |  2 +-
 3 files changed, 26 insertions(+), 13 deletions(-)

diff --git a/test/cmd_ut.c b/test/cmd_ut.c
index b44e60d5a87..2ef64d1182b 100644
--- a/test/cmd_ut.c
+++ b/test/cmd_ut.c
@@ -218,7 +218,6 @@ static int do_ut_all(struct unit_test_state *uts, struct cmd_tbl *cmdtp,
 			update_stats(uts, ste);
 		}
 	}
-	ut_report(&uts->total, uts->run_count);
 
 	return any_fail;
 }
@@ -282,7 +281,7 @@ static int do_ut(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 {
 	struct unit_test_state uts;
 	struct suite *ste;
-	const char *name;
+	char *name;
 	int ret;
 
 	if (argc < 2)
@@ -299,17 +298,26 @@ static int do_ut(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
 	} else if (!strcmp(name, "info")) {
 		ret = do_ut_info(cmdtp, flag, argc, argv);
 	} else {
-		ste = find_suite(argv[0]);
-		if (!ste) {
-			printf("Suite '%s' not found\n", argv[0]);
-			return CMD_RET_FAILURE;
-		} else if (!has_tests(ste)) {
-			/* perhaps a Kconfig option needs to be set? */
-			printf("Suite '%s' is not enabled\n", argv[0]);
-			return CMD_RET_FAILURE;
-		}
+		int any_fail = 0;
+		const char *p;
+
+		for (; p = strtok(name, ","), p; name = NULL) {
+			ste = find_suite(p);
+			if (!ste) {
+				printf("Suite '%s' not found\n", p);
+				return CMD_RET_FAILURE;
+			} else if (!has_tests(ste)) {
+				/* perhaps a Kconfig option needs to be set? */
+				printf("Suite '%s' is not enabled\n", p);
+				return CMD_RET_FAILURE;
+			}
 
-		ret = run_suite(&uts, ste, cmdtp, flag, argc, argv);
+			ret = run_suite(&uts, ste, cmdtp, flag, argc, argv);
+			if (!any_fail)
+				any_fail = ret;
+			update_stats(&uts, ste);
+		}
+		ret = any_fail;
 	}
 	show_stats(&uts);
 	if (ret)
diff --git a/test/py/tests/test_suite.py b/test/py/tests/test_suite.py
index 1e02d67efe2..d0025a7ba30 100644
--- a/test/py/tests/test_suite.py
+++ b/test/py/tests/test_suite.py
@@ -187,3 +187,8 @@ def xtest_suite(u_boot_console, u_boot_config):
 
         assert suite_count == len(EXPECTED_SUITES)
         assert total_test_count == len(all_tests)
+
+    # Run three suites
+    with cons.log.section('Check multiple suites'):
+        output = cons.run_command('ut bloblist,setexpr,mem')
+    assert 'Suites run: 3' in output
diff --git a/test/test-main.c b/test/test-main.c
index ee855bfe2ed..cabc736a524 100644
--- a/test/test-main.c
+++ b/test/test-main.c
@@ -683,7 +683,7 @@ static int ut_run_tests(struct unit_test_state *uts, const char *prefix,
 void ut_report(struct ut_stats *stats, int run_count)
 {
 	if (run_count > 1)
-		printf("Total tests");
+		printf("Suites run: %d, total tests", run_count);
 	else
 		printf("Tests");
 	printf(" run: %d, ", stats->test_count);
-- 
2.43.0



More information about the U-Boot mailing list