diff --git a/src/tox_uv/_venv.py b/src/tox_uv/_venv.py index cf7e1f2..9e76c4d 100644 --- a/src/tox_uv/_venv.py +++ b/src/tox_uv/_venv.py @@ -103,6 +103,14 @@ def environment_variables(self) -> dict[str, str]: env["VIRTUAL_ENV"] = str(self.venv_dir) return env + def _default_pass_env(self) -> list[str]: + env = super()._default_pass_env() + env.append("UV_*") # accept uv env vars + if sys.platform == "darwin": # pragma: darwin cover + env.append("MACOSX_DEPLOYMENT_TARGET") # needed for macOS binary builds + env.append("PKG_CONFIG_PATH") # needed for binary builds + return env + def create_python_env(self) -> None: base = self.base_python.version_info version_spec = f"{base.major}.{base.minor}" if base.minor else f"{base.major}" diff --git a/tests/test_tox_uv_venv.py b/tests/test_tox_uv_venv.py index 54e38c1..1186642 100644 --- a/tests/test_tox_uv_venv.py +++ b/tests/test_tox_uv_venv.py @@ -1,6 +1,7 @@ from __future__ import annotations import sys +from configparser import ConfigParser from typing import TYPE_CHECKING if TYPE_CHECKING: @@ -13,6 +14,21 @@ def test_uv_venv_self(tox_project: ToxProjectCreator) -> None: result.assert_success() +def test_uv_venv_pass_env(tox_project: ToxProjectCreator) -> None: + project = tox_project({"tox.ini": "[testenv]\npackage=skip"}) + result = project.run("c", "-k", "pass_env") + result.assert_success() + + parser = ConfigParser() + parser.read_string(result.out) + pass_through = set(parser["testenv:py"]["pass_env"].splitlines()) + + if sys.platform == "darwin": # pragma: darwin cover + assert "MACOSX_DEPLOYMENT_TARGET" in pass_through + assert "UV_*" in pass_through + assert "PKG_CONFIG_PATH" in pass_through + + def test_uv_venv_spec(tox_project: ToxProjectCreator) -> None: ver = sys.version_info project = tox_project({"tox.ini": f"[testenv]\npackage=skip\nbase_python={ver.major}.{ver.minor}"})