]> git.ipfire.org Git - thirdparty/mkosi.git/commitdiff
tests: make Config a normal dataclass
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sat, 15 Jun 2024 20:15:15 +0000 (22:15 +0200)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Thu, 27 Jun 2024 12:58:40 +0000 (14:58 +0200)
tests/__init__.py
tests/conftest.py
tests/test_boot.py
tests/test_initrd.py
tests/test_sysext.py

index d95a84014ea1cb3655bb73690e971401ac1fbffc..aae36fa0057df965bfb9f27f0f6001870d77c4b3 100644 (file)
@@ -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
 
index e653c8891ae975e039f48040a594fa6f1793ad98..7adb005f86123c8f2326f4066d3d8844b1b5871c 100644 (file)
@@ -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")),
index ddc5d6ce78f975a6456303e09514d15b75cc48cf..478cf4920957a882ef249fe12ed50eea0795ff2c 100644 (file)
@@ -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
 
index 232c0c1fe06f49987bc45bbd71925843c9ef3de0..c9de76b1348a291c8a98dabc213eced0a52f9e82 100644 (file)
@@ -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=[
index 122f1c8804c0f48b7d3d5ef04dae2440739984bc..d606cfb61384d7f299f0b1bf5828817a81698745 100644 (file)
@@ -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=[