From: Daan De Meyer Date: Thu, 1 Aug 2024 13:26:32 +0000 (+0200) Subject: tests: Simplify initrd tests X-Git-Tag: v25~374^2~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=79539371d0b6d240c2f4e9c45ba68824ca748ecc;p=thirdparty%2Fmkosi.git tests: Simplify initrd tests 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. --- diff --git a/tests/test_initrd.py b/tests/test_initrd.py index 9a5825873..b07e2ae8c 100644 --- a/tests/test_initrd.py +++ b/tests/test_initrd.py @@ -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