test: Support tests which can only be run manually
[platform/kernel/u-boot.git] / test / dm / test-dm.c
1 // SPDX-License-Identifier: GPL-2.0+
2 /*
3  * Copyright (c) 2013 Google, Inc
4  */
5
6 #include <common.h>
7 #include <command.h>
8 #include <console.h>
9 #include <dm.h>
10 #include <errno.h>
11 #include <log.h>
12 #include <malloc.h>
13 #include <asm/global_data.h>
14 #include <asm/state.h>
15 #include <dm/root.h>
16 #include <dm/uclass-internal.h>
17 #include <test/test.h>
18 #include <test/test.h>
19 #include <test/ut.h>
20
21 DECLARE_GLOBAL_DATA_PTR;
22
23 /**
24  * dm_test_run() - Run driver model tests
25  *
26  * Run all the available driver model tests, or a selection
27  *
28  * @test_name: Name of single test to run (e.g. "dm_test_fdt_pre_reloc" or just
29  *      "fdt_pre_reloc"), or NULL to run all
30  * Return: 0 if all tests passed, 1 if not
31  */
32 static int dm_test_run(const char *test_name, int runs_per_text)
33 {
34         struct unit_test *tests = UNIT_TEST_SUITE_START(dm_test);
35         const int n_ents = UNIT_TEST_SUITE_COUNT(dm_test);
36         int ret;
37
38         ret = ut_run_list("driver model", "dm_test_", tests, n_ents, test_name,
39                           runs_per_text, false);
40
41         return ret ? CMD_RET_FAILURE : 0;
42 }
43
44 int do_ut_dm(struct cmd_tbl *cmdtp, int flag, int argc, char *const argv[])
45 {
46         const char *test_name = NULL;
47         int runs_per_text = 1;
48
49         if (argc > 1 && !strncmp("-r", argv[1], 2)) {
50                 runs_per_text = dectoul(argv[1] + 2, NULL);
51                 argv++;
52                 argc++;
53         }
54         if (argc > 1)
55                 test_name = argv[1];
56
57         return dm_test_run(test_name, runs_per_text);
58 }