From: Thomas Huth <[email protected]> The memlock test analyzes /proc/*/status files and expects the layout from Linux in there. However, these files also exist on NetBSD hosts with a completely different layout, causing this test to fail. Thus limit the test to Linux hosts now. We already have a decorator to skip a test if it is running on a certain host system, but in this case, we rather want to skip if we are not running on a specific host system, so introduce a new @skipUnlessOperatingSystem decorator for this job.
Signed-off-by: Thomas Huth <[email protected]> --- v2: Check via a decorator, not via meson.build file tests/functional/qemu_test/__init__.py | 4 ++-- tests/functional/qemu_test/decorators.py | 12 ++++++++++++ tests/functional/x86_64/test_memlock.py | 3 ++- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/tests/functional/qemu_test/__init__.py b/tests/functional/qemu_test/__init__.py index 320193591b2..03e5c73d39d 100644 --- a/tests/functional/qemu_test/__init__.py +++ b/tests/functional/qemu_test/__init__.py @@ -15,8 +15,8 @@ from .linuxkernel import LinuxKernelTest from .decorators import skipIfMissingCommands, skipIfNotMachine, \ skipFlakyTest, skipUntrustedTest, skipBigDataTest, skipSlowTest, \ - skipIfMissingImports, skipIfOperatingSystem, skipLockedMemoryTest, \ - skipIfMissingEnv + skipIfMissingImports, skipIfOperatingSystem, skipUnlessOperatingSystem, \ + skipLockedMemoryTest, skipIfMissingEnv from .archive import archive_extract from .uncompress import uncompress from .gdb import GDB diff --git a/tests/functional/qemu_test/decorators.py b/tests/functional/qemu_test/decorators.py index 807418359ab..fcf236ecfdf 100644 --- a/tests/functional/qemu_test/decorators.py +++ b/tests/functional/qemu_test/decorators.py @@ -57,6 +57,18 @@ def skipIfOperatingSystem(*args): 'running on an OS (%s) that is not able to run this test' % ", ".join(args)) +def skipUnlessOperatingSystem(*args): + ''' + Decorator to skip execution of a test if the current host + operating system does not match one of the allowed ones. + Example: + + @skipUnlessOperatingSystem("Linux", "Darwin") + ''' + return skipUnless(platform.system() in args, + 'not running on one of the required operating systems (%s)' % + ", ".join(args)) + def skipIfNotMachine(*args): ''' Decorator to skip execution of a test if the current diff --git a/tests/functional/x86_64/test_memlock.py b/tests/functional/x86_64/test_memlock.py index f970a2c3095..d88843ab5f9 100755 --- a/tests/functional/x86_64/test_memlock.py +++ b/tests/functional/x86_64/test_memlock.py @@ -14,12 +14,13 @@ from typing import Dict from qemu_test import QemuSystemTest -from qemu_test import skipLockedMemoryTest +from qemu_test import skipLockedMemoryTest, skipUnlessOperatingSystem STATUS_VALUE_PATTERN = re.compile(r'^(\w+):\s+(\d+) kB', re.MULTILINE) +@skipUnlessOperatingSystem('Linux') @skipLockedMemoryTest(2_097_152) # 2GB class MemlockTest(QemuSystemTest): """ -- 2.52.0
