test: Move the devicetree check into ut_run_list()
authorSimon Glass <sjg@chromium.org>
Mon, 8 Mar 2021 00:35:07 +0000 (17:35 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 12 Mar 2021 14:57:30 +0000 (09:57 -0500)
Add a check to ut_run_list() as to whether a list has driver model tests.
Move the logic for the test devicetree into that function, in an effort
to eventually remove all logic from dm_test_run().

Signed-off-by: Simon Glass <sjg@chromium.org>
test/dm/test-dm.c
test/test-main.c

index 54e6577..8cb99ed 100644 (file)
@@ -24,22 +24,9 @@ int dm_test_run(const char *test_name)
 {
        struct unit_test *tests = ll_entry_start(struct unit_test, dm_test);
        const int n_ents = ll_entry_count(struct unit_test, dm_test);
-       struct unit_test_state uts_s = { .fail_count = 0 }, *uts = &uts_s;
        struct device_node *of_root;
        int ret;
 
-       if (!CONFIG_IS_ENABLED(OF_PLATDATA)) {
-               /*
-                * If we have no device tree, or it only has a root node, then
-                * these * tests clearly aren't going to work...
-                */
-               if (!gd->fdt_blob || fdt_next_node(gd->fdt_blob, 0, NULL) < 0) {
-                       puts("Please run with test device tree:\n"
-                            "    ./u-boot -d arch/sandbox/dts/test.dtb\n");
-                       return CMD_RET_FAILURE;
-               }
-       }
-
        of_root = gd_of_root();
        ret = ut_run_list("driver model", "dm_test_", tests, n_ents, test_name);
 
index 16c0d13..8138fb4 100644 (file)
@@ -143,6 +143,25 @@ static bool test_matches(const char *prefix, const char *test_name,
        return false;
 }
 
+/*
+ * ut_list_has_dm_tests() - Check if a list of tests has driver model ones
+ *
+ * @tests: List of tests to run
+ * @count: Number of tests to ru
+ * @return true if any of the tests have the UT_TESTF_DM flag
+ */
+static bool ut_list_has_dm_tests(struct unit_test *tests, int count)
+{
+       struct unit_test *test;
+
+       for (test = tests; test < tests + count; test++) {
+               if (test->flags & UT_TESTF_DM)
+                       return true;
+       }
+
+       return false;
+}
+
 /**
  * test_pre_run() - Handle any preparation needed to run a test
  *
@@ -342,6 +361,19 @@ int ut_run_list(const char *category, const char *prefix,
        struct unit_test_state uts = { .fail_count = 0 };
        int ret;
 
+       if (!CONFIG_IS_ENABLED(OF_PLATDATA) &&
+           ut_list_has_dm_tests(tests, count)) {
+               /*
+                * If we have no device tree, or it only has a root node, then
+                * these * tests clearly aren't going to work...
+                */
+               if (!gd->fdt_blob || fdt_next_node(gd->fdt_blob, 0, NULL) < 0) {
+                       puts("Please run with test device tree:\n"
+                            "    ./u-boot -d arch/sandbox/dts/test.dtb\n");
+                       return CMD_RET_FAILURE;
+               }
+       }
+
        if (!select_name)
                printf("Running %d %s tests\n", count, category);