summaryrefslogtreecommitdiff
path: root/test/py/tests
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2020-10-26 05:38:31 +0300
committerSimon Glass <sjg@chromium.org>2020-10-29 23:42:18 +0300
commitbc84d585ec0edf1705832fd431fc6a0ded978524 (patch)
tree1e478d53085531ee22fe9de1fa9e09939a342e96 /test/py/tests
parent60251b1d536abec8e163a00c41d801d69faa429c (diff)
downloadu-boot-bc84d585ec0edf1705832fd431fc6a0ded978524.tar.xz
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>
Diffstat (limited to 'test/py/tests')
-rw-r--r--test/py/tests/test_spl.py34
1 files changed, 34 insertions, 0 deletions
diff --git a/test/py/tests/test_spl.py b/test/py/tests/test_spl.py
new file mode 100644
index 0000000000..990cc9b071
--- /dev/null
+++ b/test/py/tests/test_spl.py
@@ -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()