From: Zbigniew Jędrzejewski-Szmek Date: Sat, 15 Jun 2024 20:15:15 +0000 (+0200) Subject: tests: make Config a normal dataclass X-Git-Tag: v24~82^2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d17915b7d4cdab64163015e9684e18b950783b67;p=thirdparty%2Fmkosi.git tests: make Config a normal dataclass --- diff --git a/tests/__init__.py b/tests/__init__.py index d95a84014..aae36fa00 100644 --- a/tests/__init__.py +++ b/tests/__init__.py @@ -1,6 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1+ import contextlib +import dataclasses import os import subprocess import sys @@ -8,7 +9,7 @@ import uuid from collections.abc import Iterator, Sequence from pathlib import Path from types import TracebackType -from typing import Any, NamedTuple, Optional +from typing import Any, Optional import pytest @@ -19,15 +20,17 @@ from mkosi.types import _FILE, CompletedProcess, PathString from mkosi.user import INVOKING_USER +@dataclasses.dataclass(frozen=True) +class ImageConfig: + distribution: Distribution + release: str + tools_tree_distribution: Optional[Distribution] + tools_tree_release: Optional[str] + debug_shell: bool + + class Image: - class Config(NamedTuple): - distribution: Distribution - release: str - tools_tree_distribution: Optional[Distribution] - tools_tree_release: Optional[str] - debug_shell: bool - - def __init__(self, config: Config, options: Sequence[PathString] = []) -> None: + def __init__(self, config: ImageConfig, options: Sequence[PathString] = []) -> None: self.options = options self.config = config diff --git a/tests/conftest.py b/tests/conftest.py index e653c8891..7adb005f8 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -7,7 +7,7 @@ import pytest from mkosi.config import parse_config from mkosi.distributions import Distribution, detect_distribution -from . import Image, ci_group +from . import ImageConfig, ci_group def pytest_addoption(parser: Any) -> None: @@ -47,10 +47,10 @@ def pytest_addoption(parser: Any) -> None: @pytest.fixture(scope="session") -def config(request: Any) -> Image.Config: +def config(request: Any) -> ImageConfig: distribution = cast(Distribution, request.config.getoption("--distribution")) release = cast(str, request.config.getoption("--release") or parse_config(["-d", str(distribution)])[1][0].release) - return Image.Config( + return ImageConfig( distribution=distribution, release=release, tools_tree_distribution=cast(Distribution, request.config.getoption("--tools-tree-distribution")), diff --git a/tests/test_boot.py b/tests/test_boot.py index ddc5d6ce7..478cf4920 100644 --- a/tests/test_boot.py +++ b/tests/test_boot.py @@ -11,7 +11,7 @@ from mkosi.qemu import find_virtiofsd from mkosi.run import find_binary, run from mkosi.versioncomp import GenericVersion -from . import Image +from . import Image, ImageConfig pytestmark = pytest.mark.integration @@ -25,7 +25,7 @@ def have_vmspawn() -> bool: @pytest.mark.parametrize("format", [f for f in OutputFormat if f not in (OutputFormat.confext, OutputFormat.sysext)]) -def test_format(config: Image.Config, format: OutputFormat) -> None: +def test_format(config: ImageConfig, format: OutputFormat) -> None: with Image( config, options=[ @@ -75,7 +75,7 @@ def test_format(config: Image.Config, format: OutputFormat) -> None: @pytest.mark.parametrize("bootloader", Bootloader) -def test_bootloader(config: Image.Config, bootloader: Bootloader) -> None: +def test_bootloader(config: ImageConfig, bootloader: Bootloader) -> None: if config.distribution == Distribution.rhel_ubi: return diff --git a/tests/test_initrd.py b/tests/test_initrd.py index 232c0c1fe..c9de76b13 100644 --- a/tests/test_initrd.py +++ b/tests/test_initrd.py @@ -21,7 +21,7 @@ from mkosi.types import PathString from mkosi.user import INVOKING_USER from mkosi.versioncomp import GenericVersion -from . import Image, ci_group +from . import Image, ImageConfig, ci_group pytestmark = pytest.mark.integration @@ -40,7 +40,7 @@ def passphrase() -> Iterator[Path]: @pytest.fixture(scope="module") -def initrd(request: Any, config: Image.Config) -> Iterator[Image]: +def initrd(request: Any, config: ImageConfig) -> Iterator[Image]: with ( ci_group(f"Initrd image {config.distribution}/{config.release}"), Image( @@ -196,7 +196,7 @@ 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: Image.Config, initrd: Image, passphrase: Path) -> None: +def test_initrd_luks_lvm(config: ImageConfig, initrd: Image, passphrase: Path) -> None: with Image( config, options=[ diff --git a/tests/test_sysext.py b/tests/test_sysext.py index 122f1c880..d606cfb61 100644 --- a/tests/test_sysext.py +++ b/tests/test_sysext.py @@ -4,12 +4,12 @@ from pathlib import Path import pytest -from . import Image +from . import Image, ImageConfig pytestmark = pytest.mark.integration -def test_sysext(config: Image.Config) -> None: +def test_sysext(config: ImageConfig) -> None: with Image( config, options=[