tests/functional: Add decorator to skip test on missing env vars

Add a decorator to skip tests on missing env variable(s). Multiple
variable names can be provided and if one or more of them are not set in
the test environment the test is skipped and the missing vars are
printed out.

Reviewed-by: Thomas Huth <thuth@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Signed-off-by: Gustavo Romero <gustavo.romero@linaro.org>
Message-ID: <20251003141820.85278-8-gustavo.romero@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
This commit is contained in:
Gustavo Romero
2025-10-07 07:33:40 +01:00
committed by Alex Bennée
parent db205774d1
commit fb8f359493
2 changed files with 20 additions and 1 deletions
+2 -1
View File
@@ -15,7 +15,8 @@ from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest
from .linuxkernel import LinuxKernelTest
from .decorators import skipIfMissingCommands, skipIfNotMachine, \
skipFlakyTest, skipUntrustedTest, skipBigDataTest, skipSlowTest, \
skipIfMissingImports, skipIfOperatingSystem, skipLockedMemoryTest
skipIfMissingImports, skipIfOperatingSystem, skipLockedMemoryTest, \
skipIfMissingEnv
from .archive import archive_extract
from .uncompress import uncompress
from .gdb import GDB
+18
View File
@@ -11,6 +11,24 @@ from unittest import skipIf, skipUnless
from .cmd import which
'''
Decorator to skip execution of a test if the provided
environment variables are not set.
Example:
@skipIfMissingEnv("QEMU_ENV_VAR0", "QEMU_ENV_VAR1")
'''
def skipIfMissingEnv(*vars_):
missing_vars = []
for var in vars_:
if os.getenv(var) == None:
missing_vars.append(var)
has_vars = True if len(missing_vars) == 0 else False
return skipUnless(has_vars, f"Missing env var(s): {', '.join(missing_vars)}")
'''
Decorator to skip execution of a test if the list
of command binaries is not available in $PATH.
Example: