
At present U-Boot has two broad sets of tests in the C code: driver model tests which do a lot of pre-/post-init and command tests which do not.
This separation makes it slightly harder to write a test, since there are two different test-state structures and different rules for running the two different test types. At present these rules are determined by where the test is (actually its prefix).
All unit tests can be run from the command line with the 'ut' command. Since SPL does not have commands, it currently calls the test runner directly and offers no control of which tests are run.
This seems like a good time to refactor the tests into a unified test runner, allowing U-Boot proper and SPL to use the same path, perhaps with some different conditions along the way.
This series sets up a unified runner called ut_run_list(), which runs a set of tests from a linker_list. Driver model tests are distinguished by a new UT_TESTF_DM flag so that the necessary init and cleanup can still be done.
This should make it easier to add SPL tests. A future series may tweak those as well.
This series is available at u-boot-dm/test-working
Simon Glass (30): doc: Tidy up testing section doc: Document make tcheck sandbox: Drop the 'starting...' message unless testing doc: Explain how to run tests without pytest doc: Document how sandbox_spl_tests are run test: Correct setexpr test prefix test: Mark all driver model tests with a flag test: Rename test-main.c to test-dm.c test: Add an overall test runner test: Create pre/post-run functions test: Call test_pre/post_run() from driver model tests test: Move dm_extended_scan() to test_pre_run() test: Move do_autoprobe() to test_pre_run() test: Move dm_scan_plat() to test_pre_run() test: Drop mallinfo() work-around test: Move console silencing to test_pre_run() test: Move delay skipping to test_pre_run() test: Handle driver model reinit in test_pre_run() test: Drop struct dm_test_state test: Move dm_test_init() into test-main.c test: Move dm_test_destroy() into test-main.c test: Move test running into a separate function test: Use ut_run_test() to run driver model tests test: Drop dm_do_test() test: Add ut_run_test_live_flat() to run tests twice test: Use a local variable for test state test: Run driver-model tests using ut_run_list() test: Use return values in dm_test_run() test: Move the devicetree check into ut_run_list() test: Move restoring of driver model state to ut_run_list()
arch/sandbox/cpu/spl.c | 2 +- arch/sandbox/cpu/start.c | 15 +- arch/sandbox/include/asm/state.h | 1 + doc/develop/index.rst | 1 + doc/develop/testing.rst | 34 ++- doc/develop/tests_under.rst | 138 ++++++++++ include/dm/test.h | 20 +- include/test/test.h | 18 +- include/test/ut.h | 45 ++++ test/Makefile | 2 + test/cmd/setexpr.c | 23 +- test/cmd_ut.c | 38 +-- test/dm/Makefile | 2 +- test/dm/core.c | 47 ++-- test/dm/test-dm.c | 41 +++ test/dm/test-driver.c | 12 +- test/dm/test-main.c | 229 ----------------- test/dm/test-uclass.c | 10 +- test/py/tests/test_log.py | 2 +- test/test-main.c | 416 +++++++++++++++++++++++++++++++ test/ut.c | 7 + 21 files changed, 767 insertions(+), 336 deletions(-) create mode 100644 doc/develop/tests_under.rst create mode 100644 test/dm/test-dm.c delete mode 100644 test/dm/test-main.c create mode 100644 test/test-main.c