huangcm
2024-08-23 d76fb8c8c6d079a3cee81da7072347dcb8bbbc70
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// SPDX-License-Identifier: GPL-2.0
/*
 * (C) Copyright 2015
 * Joe Hershberger, National Instruments, joe.hershberger@ni.com
 */
 
#include <common.h>
#include <command.h>
#include <test/suites.h>
#include <test/test.h>
 
static int do_ut_all(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]);
 
int cmd_ut_category(const char *name, struct unit_test *tests, int n_ents,
           int argc, char * const argv[])
{
   struct unit_test_state uts = { .fail_count = 0 };
   struct unit_test *test;
 
   if (argc == 1)
       printf("Running %d %s tests\n", n_ents, name);
 
   for (test = tests; test < tests + n_ents; test++) {
       if (argc > 1 && strcmp(argv[1], test->name))
           continue;
       printf("Test: %s\n", test->name);
 
       uts.start = mallinfo();
 
       test->func(&uts);
   }
 
   printf("Failures: %d\n", uts.fail_count);
 
   return uts.fail_count ? CMD_RET_FAILURE : 0;
}
 
static cmd_tbl_t cmd_ut_sub[] = {
   U_BOOT_CMD_MKENT(all, CONFIG_SYS_MAXARGS, 1, do_ut_all, "", ""),
#if defined(CONFIG_UT_DM)
   U_BOOT_CMD_MKENT(dm, CONFIG_SYS_MAXARGS, 1, do_ut_dm, "", ""),
#endif
#if defined(CONFIG_UT_ENV)
   U_BOOT_CMD_MKENT(env, CONFIG_SYS_MAXARGS, 1, do_ut_env, "", ""),
#endif
#ifdef CONFIG_UT_OVERLAY
   U_BOOT_CMD_MKENT(overlay, CONFIG_SYS_MAXARGS, 1, do_ut_overlay, "", ""),
#endif
#ifdef CONFIG_UT_TIME
   U_BOOT_CMD_MKENT(time, CONFIG_SYS_MAXARGS, 1, do_ut_time, "", ""),
#endif
#ifdef CONFIG_SANDBOX
   U_BOOT_CMD_MKENT(compression, CONFIG_SYS_MAXARGS, 1, do_ut_compression,
            "", ""),
#endif
};
 
static int do_ut_all(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
   int i;
   int retval;
   int any_fail = 0;
 
   for (i = 1; i < ARRAY_SIZE(cmd_ut_sub); i++) {
       printf("----Running %s tests----\n", cmd_ut_sub[i].name);
       retval = cmd_ut_sub[i].cmd(cmdtp, flag, 1, &cmd_ut_sub[i].name);
       if (!any_fail)
           any_fail = retval;
   }
 
   return any_fail;
}
 
static int do_ut(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
{
   cmd_tbl_t *cp;
 
   if (argc < 2)
       return CMD_RET_USAGE;
 
   /* drop initial "ut" arg */
   argc--;
   argv++;
 
   cp = find_cmd_tbl(argv[0], cmd_ut_sub, ARRAY_SIZE(cmd_ut_sub));
 
   if (cp)
       return cp->cmd(cmdtp, flag, argc, argv);
 
   return CMD_RET_USAGE;
}
 
#ifdef CONFIG_SYS_LONGHELP
static char ut_help_text[] =
   "all - execute all enabled tests\n"
#ifdef CONFIG_UT_DM
   "ut dm [test-name]\n"
#endif
#ifdef CONFIG_UT_ENV
   "ut env [test-name]\n"
#endif
#ifdef CONFIG_UT_OVERLAY
   "ut overlay [test-name]\n"
#endif
#ifdef CONFIG_UT_TIME
   "ut time - Very basic test of time functions\n"
#endif
#ifdef CONFIG_SANDBOX
   "ut compression - Test compressors and bootm decompression\n"
#endif
   ;
#endif
 
U_BOOT_CMD(
   ut, CONFIG_SYS_MAXARGS, 1, do_ut,
   "unit tests", ut_help_text
);