mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-30 16:35:37 +00:00
pytest: Collect SPL unit tests
Add a new test_spl fixture to handle running SPL unit tests. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
60251b1d53
commit
bc84d585ec
2 changed files with 42 additions and 5 deletions
|
@ -227,7 +227,7 @@ def pytest_configure(config):
|
||||||
console = u_boot_console_exec_attach.ConsoleExecAttach(log, ubconfig)
|
console = u_boot_console_exec_attach.ConsoleExecAttach(log, ubconfig)
|
||||||
|
|
||||||
re_ut_test_list = re.compile(r'_u_boot_list_2_(.*)_test_2_\1_test_(.*)\s*$')
|
re_ut_test_list = re.compile(r'_u_boot_list_2_(.*)_test_2_\1_test_(.*)\s*$')
|
||||||
def generate_ut_subtest(metafunc, fixture_name):
|
def generate_ut_subtest(metafunc, fixture_name, sym_path):
|
||||||
"""Provide parametrization for a ut_subtest fixture.
|
"""Provide parametrization for a ut_subtest fixture.
|
||||||
|
|
||||||
Determines the set of unit tests built into a U-Boot binary by parsing the
|
Determines the set of unit tests built into a U-Boot binary by parsing the
|
||||||
|
@ -237,12 +237,13 @@ def generate_ut_subtest(metafunc, fixture_name):
|
||||||
Args:
|
Args:
|
||||||
metafunc: The pytest test function.
|
metafunc: The pytest test function.
|
||||||
fixture_name: The fixture name to test.
|
fixture_name: The fixture name to test.
|
||||||
|
sym_path: Relative path to the symbol file with preceding '/'
|
||||||
|
(e.g. '/u-boot.sym')
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Nothing.
|
Nothing.
|
||||||
"""
|
"""
|
||||||
|
fn = console.config.build_dir + sym_path
|
||||||
fn = console.config.build_dir + '/u-boot.sym'
|
|
||||||
try:
|
try:
|
||||||
with open(fn, 'rt') as f:
|
with open(fn, 'rt') as f:
|
||||||
lines = f.readlines()
|
lines = f.readlines()
|
||||||
|
@ -317,10 +318,12 @@ def pytest_generate_tests(metafunc):
|
||||||
Returns:
|
Returns:
|
||||||
Nothing.
|
Nothing.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
for fn in metafunc.fixturenames:
|
for fn in metafunc.fixturenames:
|
||||||
if fn == 'ut_subtest':
|
if fn == 'ut_subtest':
|
||||||
generate_ut_subtest(metafunc, fn)
|
generate_ut_subtest(metafunc, fn, '/u-boot.sym')
|
||||||
|
continue
|
||||||
|
if fn == 'ut_spl_subtest':
|
||||||
|
generate_ut_subtest(metafunc, fn, '/spl/u-boot-spl.sym')
|
||||||
continue
|
continue
|
||||||
generate_config(metafunc, fn)
|
generate_config(metafunc, fn)
|
||||||
|
|
||||||
|
|
34
test/py/tests/test_spl.py
Normal file
34
test/py/tests/test_spl.py
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# SPDX-License-Identifier: GPL-2.0
|
||||||
|
# Copyright 2020 Google LLC
|
||||||
|
# Written by Simon Glass <sjg@chromium.org>
|
||||||
|
|
||||||
|
import os.path
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
def test_spl(u_boot_console, ut_spl_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
|
||||||
|
spl/u-boot-spl.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): SPL test to be executed (e.g. 'dm platdata_phandle')
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
cons = u_boot_console
|
||||||
|
cons.restart_uboot_with_flags(['-u', ut_spl_subtest])
|
||||||
|
output = cons.get_spawn_output().replace('\r', '')
|
||||||
|
assert 'Failures: 0' in output
|
||||||
|
finally:
|
||||||
|
# Restart afterward in case a non-SPL test is run next. This should not
|
||||||
|
# happen since SPL 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()
|
Loading…
Add table
Reference in a new issue