From 313438c971d42a2cb1abfc824ece4e6c1b82776a Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Sat, 30 Apr 2022 00:56:55 -0600 Subject: [PATCH] vpl: Support running vpl tests Add support for these to the pytest system. Signed-off-by: Simon Glass --- test/py/conftest.py | 7 +++++-- test/py/tests/test_vpl.py | 34 +++++++++++++++++++++++++++++++ test/py/u_boot_console_sandbox.py | 7 ++++++- 3 files changed, 45 insertions(+), 3 deletions(-) create mode 100644 test/py/tests/test_vpl.py diff --git a/test/py/conftest.py b/test/py/conftest.py index 16e445cd8e..2ba34479e0 100644 --- a/test/py/conftest.py +++ b/test/py/conftest.py @@ -322,8 +322,11 @@ def pytest_generate_tests(metafunc): if fn == 'ut_subtest': generate_ut_subtest(metafunc, fn, '/u-boot.sym') continue - if fn == 'ut_spl_subtest': - generate_ut_subtest(metafunc, fn, '/spl/u-boot-spl.sym') + m_subtest = re.match('ut_(.)pl_subtest', fn) + if m_subtest: + spl_name = m_subtest.group(1) + generate_ut_subtest( + metafunc, fn, f'/{spl_name}pl/u-boot-{spl_name}pl.sym') continue generate_config(metafunc, fn) diff --git a/test/py/tests/test_vpl.py b/test/py/tests/test_vpl.py new file mode 100644 index 0000000000..4af578b917 --- /dev/null +++ b/test/py/tests/test_vpl.py @@ -0,0 +1,34 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright 2022 Google LLC +# Written by Simon Glass + +import os.path +import pytest + +def test_vpl(u_boot_console, ut_vpl_subtest): + """Execute a "ut" subtest. + + The subtests are collected in function generate_ut_subtest() from linker + generated lists by applying a regular expression to the lines of file + vpl/u-boot-vpl.sym. The list entries are created using the C macro + UNIT_TEST(). + + Strict naming conventions have to be followed to match the regular + expression. Use UNIT_TEST(foo_test_bar, _flags, foo_test) for a test bar in + test suite foo that can be executed via command 'ut foo bar' and is + implemented in C function foo_test_bar(). + + Args: + u_boot_console (ConsoleBase): U-Boot console + ut_subtest (str): VPL test to be executed (e.g. 'dm platdata_phandle') + """ + try: + cons = u_boot_console + cons.restart_uboot_with_flags(['-u', '-k', ut_vpl_subtest.split()[1]]) + output = cons.get_spawn_output().replace('\r', '') + assert 'Failures: 0' in output + finally: + # Restart afterward in case a non-VPL test is run next. This should not + # happen since VPL tests are run in their own invocation of test.py, but + # the cost of doing this is not too great at present. + u_boot_console.restart_uboot() diff --git a/test/py/u_boot_console_sandbox.py b/test/py/u_boot_console_sandbox.py index ce4ca7e55e..cef416d738 100644 --- a/test/py/u_boot_console_sandbox.py +++ b/test/py/u_boot_console_sandbox.py @@ -43,7 +43,12 @@ class ConsoleSandbox(ConsoleBase): bcfg = self.config.buildconfig config_spl = bcfg.get('config_spl', 'n') == 'y' - fname = '/spl/u-boot-spl' if config_spl else '/u-boot' + config_vpl = bcfg.get('config_vpl', 'n') == 'y' + if config_vpl: + # Run TPL first, which runs VPL + fname = '/tpl/u-boot-tpl' + else: + fname = '/spl/u-boot-spl' if config_spl else '/u-boot' print(fname) cmd = [] if self.config.gdbserver: -- 2.39.5