DEVX-17: Fix pip install --break-system-packages in devx.tools.setup #30

Merged
emil merged 1 commits from DEVX-17-fix-pip-break-system-packages into master 2026-06-23 21:57:38 +00:00
3 changed files with 14 additions and 2 deletions
+1 -1
View File
@@ -1 +1 @@
DEVX-16
DEVX-17
+6 -1
View File
@@ -28,7 +28,12 @@ def _run(cmd: list[str]) -> None:
def _install_python_deps(bin_dir: str, extras: str = "dev") -> None:
"""Install the project with the specified extras in editable mode."""
pip = str(Path(bin_dir) / "pip")
_run([pip, "install", "-e", f".[{extras}]"])
cmd = [pip, "install", "-e", f".[{extras}]"]
# In CI (system Python), --break-system-packages allows upgrading
# debian-installed packages (e.g. platformdirs) that lack RECORD files.
if os.environ.get("PIP_BREAK_SYSTEM_PACKAGES") == "1":
cmd.append("--break-system-packages")
_run(cmd)
def _install_pre_commit_hooks(bin_dir: str) -> None:
+7
View File
@@ -1,5 +1,6 @@
"""Unit tests for devx.tools.setup."""
import os
import subprocess
from pathlib import Path
from unittest.mock import MagicMock, patch
@@ -47,6 +48,12 @@ class TestInstallPythonDeps:
_install_python_deps(".venv/bin", "ci,lint")
mock_run.assert_called_once_with([".venv/bin/pip", "install", "-e", ".[ci,lint]"])
@patch("devx.tools.setup._run")
def test_install_with_break_system_packages(self, mock_run: MagicMock) -> None:
with patch.dict(os.environ, {"PIP_BREAK_SYSTEM_PACKAGES": "1"}):
_install_python_deps(".venv/bin", "ci")
mock_run.assert_called_once_with([".venv/bin/pip", "install", "-e", ".[ci]", "--break-system-packages"])
class TestInstallPreCommitHooks:
@patch("devx.tools.setup._run")