tests/functional: Add a decorator for skipping tests on particular OS

Since tests might be failing on some operating systems,
introduce the skipIfOperatingSystem() decorator.

Acked-by: Michael S. Tsirkin <mst@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-ID: <20250403203241.46692-3-philmd@linaro.org>
This commit is contained in:
Philippe Mathieu-Daudé 2025-04-03 22:32:38 +02:00 committed by Richard Henderson
parent 4412d71382
commit 00f119f4c4
2 changed files with 15 additions and 2 deletions

View file

@ -15,6 +15,6 @@ from .testcase import QemuBaseTest, QemuUserTest, QemuSystemTest
from .linuxkernel import LinuxKernelTest
from .decorators import skipIfMissingCommands, skipIfNotMachine, \
skipFlakyTest, skipUntrustedTest, skipBigDataTest, skipSlowTest, \
skipIfMissingImports
skipIfMissingImports, skipIfOperatingSystem
from .archive import archive_extract
from .uncompress import uncompress

View file

@ -5,7 +5,7 @@
import importlib
import os
import platform
from unittest import skipUnless
from unittest import skipIf, skipUnless
from .cmd import which
@ -26,6 +26,19 @@ def skipIfMissingCommands(*args):
return skipUnless(has_cmds, 'required command(s) "%s" not installed' %
", ".join(args))
'''
Decorator to skip execution of a test if the current
host operating system does match one of the prohibited
ones.
Example
@skipIfOperatingSystem("Linux", "Darwin")
'''
def skipIfOperatingSystem(*args):
return skipIf(platform.system() in args,
'running on an OS (%s) that is not able to run this test' %
", ".join(args))
'''
Decorator to skip execution of a test if the current
host machine does not match one of the permitted