vpl: Support running vpl tests
Add support for these to the pytest system. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
9ae25b9ac9
commit
313438c971
@ -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)
|
||||
|
||||
|
34
test/py/tests/test_vpl.py
Normal file
34
test/py/tests/test_vpl.py
Normal file
@ -0,0 +1,34 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
# Copyright 2022 Google LLC
|
||||
# Written by Simon Glass <sjg@chromium.org>
|
||||
|
||||
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()
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user