]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
tests: Simplify initrd tests
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Thu, 1 Aug 2024 13:26:32 +0000 (15:26 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Fri, 2 Aug 2024 07:32:02 +0000 (09:32 +0200)
Let's get rid of the fixtures and just rely on the default initrd
built as part of the image itself. This also means any settings
picked up from mkosi.local.conf are applied to the initrd build.

tests/test_initrd.py

index 9a58258738b8538d5d563cd8fa88a03fd8b3aa4c..b07e2ae8c7d23bcca53691585ace3943121a8672 100644 (file)
@@ -7,7 +7,6 @@ import tempfile
 import textwrap
 from collections.abc import Iterator
 from pathlib import Path
-from typing import Any
 
 import pytest
 
@@ -17,7 +16,7 @@ from mkosi.run import run
 from mkosi.tree import copy_tree
 from mkosi.user import INVOKING_USER
 
-from . import Image, ImageConfig, ci_group
+from . import Image, ImageConfig
 
 pytestmark = pytest.mark.integration
 
@@ -35,30 +34,10 @@ def passphrase() -> Iterator[Path]:
         yield Path(passphrase.name)
 
 
-@pytest.fixture(scope="module")
-def initrd(request: Any, config: ImageConfig) -> Iterator[Image]:
-    with (
-        ci_group(f"Initrd image {config.distribution}/{config.release}"),
-        Image(
-            config,
-            options=[
-                "--directory", "",
-                "--include=mkosi-initrd/",
-            ],
-        ) as initrd
-    ):
-        if initrd.config.distribution == Distribution.rhel_ubi:
-            pytest.skip("Cannot build RHEL-UBI initrds")
-
-        initrd.build()
-        yield initrd
-
-
-def test_initrd(initrd: Image) -> None:
+def test_initrd(config: ImageConfig) -> None:
     with Image(
-        initrd.config,
+        config,
         options=[
-            "--initrd", Path(initrd.output_dir) / "initrd",
             "--kernel-command-line=systemd.unit=mkosi-check-and-shutdown.service",
             "--incremental",
             "--ephemeral",
@@ -70,11 +49,10 @@ def test_initrd(initrd: Image) -> None:
 
 
 @pytest.mark.skipif(os.getuid() != 0, reason="mkosi-initrd LVM test can only be executed as root")
-def test_initrd_lvm(initrd: Image) -> None:
+def test_initrd_lvm(config: ImageConfig) -> None:
     with Image(
-        initrd.config,
+        config,
         options=[
-            "--initrd", Path(initrd.output_dir) / "initrd",
             "--kernel-command-line=systemd.unit=mkosi-check-and-shutdown.service",
             # LVM confuses systemd-repart so we mask it for this test.
             "--kernel-command-line=systemd.mask=systemd-repart.service",
@@ -115,7 +93,7 @@ def test_initrd_lvm(initrd: Image) -> None:
         image.qemu(["--format=disk"])
 
 
-def test_initrd_luks(initrd: Image, passphrase: Path) -> None:
+def test_initrd_luks(config: ImageConfig, passphrase: Path) -> None:
     with tempfile.TemporaryDirectory() as repartd:
         os.chown(repartd, INVOKING_USER.uid, INVOKING_USER.gid)
 
@@ -151,7 +129,7 @@ def test_initrd_luks(initrd: Image, passphrase: Path) -> None:
                 f"""\
                 [Partition]
                 Type=root
-                Format={initrd.config.distribution.filesystem()}
+                Format={config.distribution.filesystem()}
                 Minimize=guess
                 Encrypt=key-file
                 CopyFiles=/
@@ -160,9 +138,8 @@ def test_initrd_luks(initrd: Image, passphrase: Path) -> None:
         )
 
         with Image(
-            initrd.config,
+            config,
             options=[
-                "--initrd", Path(initrd.output_dir) / "initrd",
                 "--repart-dir", repartd,
                 "--passphrase", passphrase,
                 "--kernel-command-line=systemd.unit=mkosi-check-and-shutdown.service",
@@ -177,11 +154,10 @@ def test_initrd_luks(initrd: Image, passphrase: Path) -> None:
 
 
 @pytest.mark.skipif(os.getuid() != 0, reason="mkosi-initrd LUKS+LVM test can only be executed as root")
-def test_initrd_luks_lvm(config: ImageConfig, initrd: Image, passphrase: Path) -> None:
+def test_initrd_luks_lvm(config: ImageConfig, passphrase: Path) -> None:
     with Image(
         config,
         options=[
-            "--initrd", Path(initrd.output_dir) / "initrd",
             "--kernel-command-line=systemd.unit=mkosi-check-and-shutdown.service",
             "--kernel-command-line=root=LABEL=root",
             "--kernel-command-line=rw",
@@ -238,14 +214,20 @@ def test_initrd_luks_lvm(config: ImageConfig, initrd: Image, passphrase: Path) -
         ])
 
 
-def test_initrd_size(initrd: Image) -> None:
-    # The fallback value is for CentOS and related distributions.
-    maxsize = 1024**2 * {
-        Distribution.fedora: 46,
-        Distribution.debian: 40,
-        Distribution.ubuntu: 36,
-        Distribution.arch: 67,
-        Distribution.opensuse: 39,
-    }.get(initrd.config.distribution, 48)
+def test_initrd_size(config: ImageConfig) -> None:
+    with Image(
+        config,
+        options=["--incremental", "--format=directory"],
+    ) as image:
+        image.build()
+
+        # The fallback value is for CentOS and related distributions.
+        maxsize = 1024**2 * {
+            Distribution.fedora: 55,
+            Distribution.debian: 55,
+            Distribution.ubuntu: 50,
+            Distribution.arch: 80,
+            Distribution.opensuse: 55,
+        }.get(config.distribution, 55)
 
-    assert (Path(initrd.output_dir) / "initrd").stat().st_size <= maxsize
+        assert (Path(image.output_dir) / "image.initrd").stat().st_size <= maxsize