From 59b4d0de90d4f91025178c8a09399defffd895d6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosch Date: Thu, 5 Jun 2025 14:00:09 +0200 Subject: [PATCH] nixos/lib/test-driver: try using XDG_RUNTIME_DIR if available At work we have the use-case that several people connect to a large Linux box to run tests and debug those interactively. All tests write their state into a global `/tmp` -- e.g. the vde1 socket and the VMs' state. This leads to conflicts when multiple people are doing this. This change tries to use XDG_RUNTIME_DIR before using Python's detection of a global temp directory: when connecting, this requires a working user session, but then we get working directories per user. This is preferable over doing something like `mktemp -d` per run since that would break use-cases where you want to keep the VMs' state across multiple sessions (`--keep-vm-state`). --- nixos/lib/test-driver/src/test_driver/driver.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/nixos/lib/test-driver/src/test_driver/driver.py b/nixos/lib/test-driver/src/test_driver/driver.py index bf3dda06a617..28fce1b300a5 100644 --- a/nixos/lib/test-driver/src/test_driver/driver.py +++ b/nixos/lib/test-driver/src/test_driver/driver.py @@ -39,15 +39,15 @@ def get_tmp_dir() -> Path: Raises an exception in case the retrieved temporary directory is not writeable See https://docs.python.org/3/library/tempfile.html#tempfile.gettempdir """ - tmp_dir = Path(tempfile.gettempdir()) + tmp_dir = Path(os.environ.get("XDG_RUNTIME_DIR", tempfile.gettempdir())) tmp_dir.mkdir(mode=0o700, exist_ok=True) if not tmp_dir.is_dir(): raise NotADirectoryError( - f"The directory defined by TMPDIR, TEMP, TMP or CWD: {tmp_dir} is not a directory" + f"The directory defined by XDG_RUNTIME_DIR, TMPDIR, TEMP, TMP or CWD: {tmp_dir} is not a directory" ) if not os.access(tmp_dir, os.W_OK): raise PermissionError( - f"The directory defined by TMPDIR, TEMP, TMP, or CWD: {tmp_dir} is not writeable" + f"The directory defined by XDG_RUNTIME_DIR, TMPDIR, TEMP, TMP, or CWD: {tmp_dir} is not writeable" ) return tmp_dir