[PATCH 1/2] test: allow multiple config options in buildconfigspec
Heinrich Schuchardt
heinrich.schuchardt at canonical.com
Sat May 3 15:31:54 CEST 2025
In some cases we have alternative configuration options that supply the
same functionality, e.g CONFIG_NET and CONFIG_NET_LWIP.
Allow to specify all of them as arguments for buildconfigspec() and execute
the text if any of these is fulfilled, e.g.
@pytest.mark.buildconfigspec('net', 'net_lwip')
Update the documentation.
Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
---
doc/develop/py_testing.rst | 24 ++++++++++++++++++++++++
test/py/conftest.py | 10 +++++++---
2 files changed, 31 insertions(+), 3 deletions(-)
diff --git a/doc/develop/py_testing.rst b/doc/develop/py_testing.rst
index 217ae447035..7dbed8833bf 100644
--- a/doc/develop/py_testing.rst
+++ b/doc/develop/py_testing.rst
@@ -514,3 +514,27 @@ of the `ubman.config` object, for example
Build configuration values (from `.config`) may be accessed via the dictionary
`ubman.config.buildconfig`, with keys equal to the Kconfig variable
names.
+
+A required configuration setting can be defined via a buildconfigspec()
+annotation. The name of the configuration option is specified in lower case. The
+following annotation for a test requires CONFIG_EFI_LOADER=y:
+
+.. code-block:: python
+
+ @pytest.mark.buildconfigspec('efi_loader')
+
+Sometimes multiple configuration option supply the same functionality. If
+multiple arguments are passed to buildconfigspec(), only one of the
+configuration options needs to be set. The following annotation requires that
+either of CONFIG_NET or CONFIG_NET_LWIP is set:
+
+.. code-block:: python
+
+ @pytest.mark.buildconfigspec('net', 'net lwip')
+
+The notbuildconfigspec() annotation can be used to require a configuration
+option not to be set. The following annotation requires CONFIG_RISCV=n:
+
+.. code-block:: python
+
+ @pytest.mark.notbuildconfigspec('riscv')
diff --git a/test/py/conftest.py b/test/py/conftest.py
index 5aea85647af..6c3ac67979a 100644
--- a/test/py/conftest.py
+++ b/test/py/conftest.py
@@ -711,9 +711,13 @@ def setup_buildconfigspec(item):
"""
for options in item.iter_markers('buildconfigspec'):
- option = options.args[0]
- if not ubconfig.buildconfig.get('config_' + option.lower(), None):
- pytest.skip('.config feature "%s" not enabled' % option.lower())
+ nomatch = True
+ for arg in options.args:
+ if ubconfig.buildconfig.get('config_' + arg.lower(), None):
+ nomatch = False
+ if nomatch:
+ argsString = ', '.join(options.args)
+ pytest.skip(f'.config features "{argsString}" not enabled')
for options in item.iter_markers('notbuildconfigspec'):
option = options.args[0]
if ubconfig.buildconfig.get('config_' + option.lower(), None):
--
2.48.1
More information about the U-Boot
mailing list