test: Allow SPL to run any available test

At present SPL only runs driver model tests. Update it to run all
available tests, i.e. in any test suite.

Signed-off-by: Simon Glass <sjg@chromium.org>
diff --git a/test/dm/test-dm.c b/test/dm/test-dm.c
index 729becf..9ba2ba2 100644
--- a/test/dm/test-dm.c
+++ b/test/dm/test-dm.c
@@ -20,7 +20,16 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int dm_test_run(const char *test_name)
+/**
+ * dm_test_run() - Run driver model tests
+ *
+ * Run all the available driver model tests, or a selection
+ *
+ * @test_name: Name of single test to run (e.g. "dm_test_fdt_pre_reloc" or just
+ *	"fdt_pre_reloc"), or NULL to run all
+ * @return 0 if all tests passed, 1 if not
+ */
+static int dm_test_run(const char *test_name)
 {
 	struct unit_test *tests = UNIT_TEST_SUITE_START(dm_test);
 	const int n_ents = UNIT_TEST_SUITE_COUNT(dm_test);
diff --git a/test/test-main.c b/test/test-main.c
index 6edd49f..e1b49e0 100644
--- a/test/test-main.c
+++ b/test/test-main.c
@@ -119,7 +119,8 @@
  *
  * @prefix: String prefix for the tests. Any tests that have this prefix will be
  *	printed without the prefix, so that it is easier to see the unique part
- *	of the test name. If NULL, no prefix processing is done
+ *	of the test name. If NULL, any suite name (xxx_test) is considered to be
+ *	a prefix.
  * @test_name: Name of current test
  * @select_name: Name of test to run (or NULL for all)
  * @return true to run this test, false to skip it
@@ -133,9 +134,17 @@
 	if (!strcmp(test_name, select_name))
 		return true;
 
-	/* All tests have this prefix */
-	if (prefix && !strncmp(test_name, prefix, strlen(prefix)))
-		test_name += strlen(prefix);
+	if (!prefix) {
+		const char *p = strstr(test_name, "_test_");
+
+		/* convert xxx_test_yyy to yyy, i.e. remove the suite name */
+		if (p)
+			test_name = p + 6;
+	} else {
+		/* All tests have this prefix */
+		if (!strncmp(test_name, prefix, strlen(prefix)))
+			test_name += strlen(prefix);
+	}
 
 	if (!strcmp(test_name, select_name))
 		return true;