From fc66dc78c3f39a88db944bcfe65b5e3f738682c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Thalheim?= Date: Wed, 20 Aug 2025 21:24:21 +0200 Subject: [PATCH] PLW0603: fix --- .../container-test-driver/test_driver/__init__.py | 12 ++---------- pkgs/clan-cli/clan_lib/bwrap/__init__.py | 11 ++--------- 2 files changed, 4 insertions(+), 19 deletions(-) diff --git a/lib/test/container-test-driver/test_driver/__init__.py b/lib/test/container-test-driver/test_driver/__init__.py index be13e36c8..c61a68414 100644 --- a/lib/test/container-test-driver/test_driver/__init__.py +++ b/lib/test/container-test-driver/test_driver/__init__.py @@ -13,7 +13,7 @@ import uuid from collections.abc import Callable from contextlib import _GeneratorContextManager from dataclasses import dataclass -from functools import cached_property +from functools import cache, cached_property from pathlib import Path from tempfile import NamedTemporaryFile, TemporaryDirectory from typing import Any @@ -22,16 +22,10 @@ from colorama import Fore, Style from .logger import AbstractLogger, CompositeLogger, TerminalLogger -# Global flag to track if test environment has been initialized -_test_env_initialized = False - +@cache def init_test_environment() -> None: """Set up the test environment (network bridge, /etc/passwd) once.""" - global _test_env_initialized - if _test_env_initialized: - return - # Set up network bridge subprocess.run( ["ip", "link", "add", "br0", "type", "bridge"], @@ -90,8 +84,6 @@ nogroup:x:65534: errno = ctypes.get_errno() raise OSError(errno, os.strerror(errno), "Failed to mount group") - _test_env_initialized = True - # Load the C library libc = ctypes.CDLL("libc.so.6", use_errno=True) diff --git a/pkgs/clan-cli/clan_lib/bwrap/__init__.py b/pkgs/clan-cli/clan_lib/bwrap/__init__.py index 05f8d5f2c..6e3daf8c6 100644 --- a/pkgs/clan-cli/clan_lib/bwrap/__init__.py +++ b/pkgs/clan-cli/clan_lib/bwrap/__init__.py @@ -1,21 +1,14 @@ import os import shutil +from functools import cache from pathlib import Path from clan_lib.cmd import Log, RunOpts, run from clan_lib.nix import nix_shell -_works: bool | None = None - +@cache def bubblewrap_works() -> bool: - global _works - if _works is None: - _works = _bubblewrap_works() - return _works - - -def _bubblewrap_works() -> bool: real_bash_path = Path("bash") if os.environ.get("IN_NIX_SANDBOX"): bash_executable_path = Path(str(shutil.which("bash")))