52630621bc
Related: rhbz#2174847 Signed-off-by: Tomáš Hozza <thozza@redhat.com>
121 lines
4.6 KiB
Diff
121 lines
4.6 KiB
Diff
From 209f9f39bfc7a17cfdbb7b55a44ff7f56e821681 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hozza?= <thozza@redhat.com>
|
|
Date: Mon, 17 Apr 2023 17:33:51 +0200
|
|
Subject: [PATCH 2/3] Test: add ability to skip tests for unsupported
|
|
file-systems
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Add a new optional pytest CLI argument `--unsupported-fs` allowing to
|
|
specify file-systems which should be treated as unsupported in the
|
|
platform where running tests. Any test cases dependent on such
|
|
file-system support will be sipped.
|
|
|
|
This will allow to run unit tests and selectively skipping test cases
|
|
for unsupported file-systems.
|
|
|
|
Signed-off-by: Tomáš Hozza <thozza@redhat.com>
|
|
---
|
|
test/conftest.py | 19 +++++++++++++++++++
|
|
test/run/test_assemblers.py | 14 ++++++--------
|
|
test/test.py | 14 ++++++++++++++
|
|
3 files changed, 39 insertions(+), 8 deletions(-)
|
|
create mode 100644 test/conftest.py
|
|
|
|
diff --git a/test/conftest.py b/test/conftest.py
|
|
new file mode 100644
|
|
index 0000000..f2ff9f3
|
|
--- /dev/null
|
|
+++ b/test/conftest.py
|
|
@@ -0,0 +1,19 @@
|
|
+unsupported_filesystems = []
|
|
+"""Globally accessible list of filesystems that are unsupported on the system when running test cases"""
|
|
+
|
|
+
|
|
+def pytest_addoption(parser):
|
|
+ parser.addoption(
|
|
+ "--unsupported-fs",
|
|
+ action="append",
|
|
+ default=[],
|
|
+ metavar="FS",
|
|
+ help="List of filesystems to treat as unsupported on the system when running test cases." +
|
|
+ "Can be specified multiple times.",
|
|
+ )
|
|
+
|
|
+
|
|
+def pytest_configure(config):
|
|
+ # pylint: disable=global-statement
|
|
+ global unsupported_filesystems
|
|
+ unsupported_filesystems = config.getoption("--unsupported-fs")
|
|
diff --git a/test/run/test_assemblers.py b/test/run/test_assemblers.py
|
|
index 30638e6..8783866 100644
|
|
--- a/test/run/test_assemblers.py
|
|
+++ b/test/run/test_assemblers.py
|
|
@@ -81,6 +81,8 @@ def read_partition_table(device):
|
|
@pytest.mark.skipif(not test.TestBase.can_bind_mount(), reason="root-only")
|
|
@pytest.mark.parametrize("fs_type", ["ext4", "xfs", "btrfs"])
|
|
def test_rawfs(osbuild, fs_type):
|
|
+ if not test.TestBase.has_filesystem_support(fs_type):
|
|
+ pytest.skip(f"The {fs_type} was explicitly marked as unsupported on this platform.")
|
|
options = {
|
|
"filename": "image.raw",
|
|
"root_fs_uuid": "016a1cda-5182-4ab3-bf97-426b00b74eb0",
|
|
@@ -150,17 +152,13 @@ def test_ostree(osbuild):
|
|
@pytest.mark.skipif(not test.TestBase.have_tree_diff(), reason="tree-diff missing")
|
|
@pytest.mark.skipif(not test.TestBase.have_test_data(), reason="no test-data access")
|
|
@pytest.mark.skipif(not test.TestBase.can_bind_mount(), reason="root-only")
|
|
-@pytest.mark.parametrize(
|
|
- "fmt,fs_type",
|
|
- [("raw", "ext4"), ("raw", "xfs"), ("raw", "btrfs"),
|
|
- ("raw.xz", "ext4"), ("raw.xz", "xfs"), ("raw.xz", "btrfs"),
|
|
- ("qcow2", "ext4"), ("qcow2", "xfs"), ("qcow2", "btrfs"),
|
|
- ("vmdk", "ext4"), ("vmdk", "xfs"), ("vmdk", "btrfs"),
|
|
- ("vdi", "ext4"), ("vdi", "xfs"), ("vdi", "btrfs")]
|
|
-)
|
|
+@pytest.mark.parametrize("fmt,", ["raw", "raw.xz", "qcow2", "vmdk", "vdi"])
|
|
+@pytest.mark.parametrize("fs_type", ["ext4", "xfs", "btrfs"])
|
|
def test_qemu(osbuild, fmt, fs_type):
|
|
loctl = loop.LoopControl()
|
|
with osbuild as osb:
|
|
+ if not test.TestBase.has_filesystem_support(fs_type):
|
|
+ pytest.skip(f"The {fs_type} was explicitly marked as unsupported on this platform.")
|
|
options = {
|
|
"format": fmt,
|
|
"filename": f"image.{fmt}",
|
|
diff --git a/test/test.py b/test/test.py
|
|
index 98be29b..c51548c 100644
|
|
--- a/test/test.py
|
|
+++ b/test/test.py
|
|
@@ -15,6 +15,8 @@ import osbuild.meta
|
|
from osbuild.objectstore import ObjectStore
|
|
from osbuild.util import linux
|
|
|
|
+from .conftest import unsupported_filesystems
|
|
+
|
|
|
|
class TestBase(unittest.TestCase):
|
|
"""Base Class for Tests
|
|
@@ -263,6 +265,18 @@ class TestBase(unittest.TestCase):
|
|
output = subprocess.check_output([os.path.join(checkout, "tools/tree-diff"), path1, path2])
|
|
return json.loads(output)
|
|
|
|
+ @staticmethod
|
|
+ def has_filesystem_support(fs: str) -> bool:
|
|
+ """Check File-System Support
|
|
+
|
|
+ Check whether the current test-run has support for the given file-system.
|
|
+ The assumption is that any file-system is treated as supported, unless
|
|
+ explicitly marked as unsupported when executing pytest. This allows us
|
|
+ to skip tests for file-systems that are not supported on specific
|
|
+ platforms.
|
|
+ """
|
|
+ return fs not in unsupported_filesystems
|
|
+
|
|
|
|
class OSBuild(contextlib.AbstractContextManager):
|
|
"""OSBuild Executor
|
|
--
|
|
2.39.2
|
|
|