test: Introduce a better array of test suites
authorSimon Glass <sjg@chromium.org>
Mon, 20 Jan 2025 21:25:33 +0000 (14:25 -0700)
committerTom Rini <trini@konsulko.com>
Fri, 24 Jan 2025 20:34:40 +0000 (14:34 -0600)
commit7bbf2f7983c9ba5b8588ed86777b4b0b21eb542a
treed66aad3be49ebd7492a4744b57db2dddc32ff466
parent4ba3ab4901c564725c37e927e2ba29595712cd9d
test: Introduce a better array of test suites

The current cmd_ut_sub[] array was fine when there were only a few test
suites. But is quite unwieldy now:

- it requires a separate do_ut_xxx for each suite, even though the code
  for most is almost identical
- running more than one suite requires running multiple commands, and
  there is no record of which suites passed or failed
- 'ut all' runs all suites but reports their results individually
- we need lots of #ifdefs in the array, mirroring those in the makefile
  but maintained in a separate place

In fact the tests are all in the same linker list. The suites are
grouped, so it is possible to access the information without a command.

Introduce a 'suite' array, which holds the cmd_ut_...() function to
call, but can also support running a suite without that function. This
means that the array of struct cmd_tbl is transformed into an array of
'struct suite'.

This will allow removal of many of the functions, particularly those
without test-specific init.

Signed-off-by: Simon Glass <sjg@chromium.org>
include/test/suites.h
test/cmd_ut.c