diff --git a/src/build/util.py b/src/build/util.py index d7dc43b6..bbdfc758 100644 --- a/src/build/util.py +++ b/src/build/util.py @@ -2,6 +2,7 @@ from __future__ import annotations +import os import pathlib import tempfile @@ -21,7 +22,7 @@ def _project_wheel_metadata(builder: ProjectBuilder) -> importlib.metadata.Packa def project_wheel_metadata( source_dir: StrPath, - isolated: bool = True, + isolated: bool = os.environ.get('BUILD_ENVIRONMENT', 'isolated') == 'isolated', *, runner: SubprocessRunner = pyproject_hooks.quiet_subprocess_runner, ) -> importlib.metadata.PackageMetadata: @@ -34,7 +35,9 @@ def project_wheel_metadata( :param source_dir: Project source directory :param isolated: Whether or not to run invoke the backend in the current environment or to create an isolated one and invoke it - there. + there. Defaults to True (isolated), but with + ``BUILD_ENVIRONMENT=current`` set, the default + is False. :param runner: An alternative runner for backend subprocesses """ diff --git a/tests/test_util.py b/tests/test_util.py index 0ab81b84..1ab06c80 100644 --- a/tests/test_util.py +++ b/tests/test_util.py @@ -1,6 +1,8 @@ # SPDX-License-Identifier: MIT import importlib.util +import sys +import subprocess import pytest @@ -47,3 +49,11 @@ def test_with_get_requires(package_test_metadata): assert str(metadata['version']) == '1.0.0' assert metadata['summary'] == 'hello!' assert isinstance(metadata.json, dict) + + +def test_current_environment_default(): + check_script = "import build.util, inspect; print(inspect.signature(build.util.project_wheel_metadata).parameters['isolated'].default)" + cmd = [sys.executable, '-c', check_script] + env = {'BUILD_ENVIRONMENT': 'current'} + res = subprocess.check_output(cmd, env=env, text=True, encoding='utf-8') + assert res.strip() == 'False'