dm: test: Move test running code into a separate function
authorSimon Glass <sjg@chromium.org>
Fri, 19 May 2017 02:09:14 +0000 (20:09 -0600)
committerSimon Glass <sjg@chromium.org>
Thu, 1 Jun 2017 13:03:09 +0000 (07:03 -0600)
We want to run the same test on flat and live trees. In preparation for
this, create a new function which handles running a test.

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

index 9aa9d3a9533f7efecf30a0e8455b145e3055b2fb..2848673e06fd592a83c762ccca9119b12d7f7b60 100644 (file)
@@ -72,12 +72,42 @@ static int dm_test_destroy(struct unit_test_state *uts)
        return 0;
 }
 
+static int dm_do_test(struct unit_test_state *uts, struct unit_test *test)
+{
+       struct sandbox_state *state = state_get_current();
+
+       printf("Test: %s\n", test->name);
+       ut_assertok(dm_test_init(uts));
+
+       uts->start = mallinfo();
+       if (test->flags & DM_TESTF_SCAN_PDATA)
+               ut_assertok(dm_scan_platdata(false));
+       if (test->flags & DM_TESTF_PROBE_TEST)
+               ut_assertok(do_autoprobe(uts));
+       if (test->flags & DM_TESTF_SCAN_FDT)
+               ut_assertok(dm_scan_fdt(gd->fdt_blob, false));
+
+       /*
+        * Silence the console and rely on console reocrding to get
+        * our output.
+        */
+       console_record_reset();
+       if (!state->show_test_output)
+               gd->flags |= GD_FLG_SILENT;
+       test->func(uts);
+       gd->flags &= ~GD_FLG_SILENT;
+       state_set_skip_delays(false);
+
+       ut_assertok(dm_test_destroy(uts));
+
+       return 0;
+}
+
 static int dm_test_main(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 = &global_dm_test_state;
-       struct sandbox_state *state = state_get_current();
        uts->priv = &_global_priv_dm_test_state;
        struct unit_test *test;
        int run_count;
@@ -106,30 +136,8 @@ static int dm_test_main(const char *test_name)
                        name += 8;
                if (test_name && strcmp(test_name, name))
                        continue;
-               printf("Test: %s\n", test->name);
+               ut_assertok(dm_do_test(uts, test));
                run_count++;
-               ut_assertok(dm_test_init(uts));
-
-               uts->start = mallinfo();
-               if (test->flags & DM_TESTF_SCAN_PDATA)
-                       ut_assertok(dm_scan_platdata(false));
-               if (test->flags & DM_TESTF_PROBE_TEST)
-                       ut_assertok(do_autoprobe(uts));
-               if (test->flags & DM_TESTF_SCAN_FDT)
-                       ut_assertok(dm_scan_fdt(gd->fdt_blob, false));
-
-               /*
-                * Silence the console and rely on console reocrding to get
-                * our output.
-                */
-               console_record_reset();
-               if (!state->show_test_output)
-                       gd->flags |= GD_FLG_SILENT;
-               test->func(uts);
-               gd->flags &= ~GD_FLG_SILENT;
-               state_set_skip_delays(false);
-
-               ut_assertok(dm_test_destroy(uts));
        }
 
        if (test_name && !run_count)