Commit 4387523e by Arun Babu Neelicattu Committed by Bjorn Neergaard

tests: isolate python env vars

parent d6070201
...@@ -34,6 +34,7 @@ from poetry.utils.helpers import remove_directory ...@@ -34,6 +34,7 @@ from poetry.utils.helpers import remove_directory
from tests.helpers import TestLocker from tests.helpers import TestLocker
from tests.helpers import TestRepository from tests.helpers import TestRepository
from tests.helpers import get_package from tests.helpers import get_package
from tests.helpers import isolated_environment
from tests.helpers import mock_clone from tests.helpers import mock_clone
from tests.helpers import mock_download from tests.helpers import mock_download
...@@ -246,27 +247,19 @@ def pep517_metadata_mock(mocker: MockerFixture) -> None: ...@@ -246,27 +247,19 @@ def pep517_metadata_mock(mocker: MockerFixture) -> None:
@pytest.fixture @pytest.fixture
def environ() -> Iterator[None]: def environ() -> Iterator[None]:
original_environ = dict(os.environ) with isolated_environment():
yield
yield
os.environ.clear()
os.environ.update(original_environ)
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
def isolate_environ() -> Iterator[None]: def isolate_environ() -> Iterator[None]:
"""Ensure the environment is isolated from user configuration.""" """Ensure the environment is isolated from user configuration."""
original_environ = dict(os.environ) with isolated_environment():
for var in os.environ:
for var in os.environ: if var.startswith("POETRY_") or var in {"PYTHONPATH", "VIRTUAL_ENV"}:
if var.startswith("POETRY_"): del os.environ[var]
del os.environ[var]
yield
os.environ.clear() yield
os.environ.update(original_environ)
@pytest.fixture(autouse=True) @pytest.fixture(autouse=True)
......
from __future__ import annotations from __future__ import annotations
import contextlib
import os import os
import re import re
import shutil import shutil
...@@ -9,6 +10,7 @@ import urllib.parse ...@@ -9,6 +10,7 @@ import urllib.parse
from pathlib import Path from pathlib import Path
from typing import TYPE_CHECKING from typing import TYPE_CHECKING
from typing import Any from typing import Any
from typing import Iterator
from poetry.core.masonry.utils.helpers import escape_name from poetry.core.masonry.utils.helpers import escape_name
from poetry.core.masonry.utils.helpers import escape_version from poetry.core.masonry.utils.helpers import escape_version
...@@ -230,3 +232,21 @@ class TestRepository(Repository): ...@@ -230,3 +232,21 @@ class TestRepository(Repository):
f"-{escape_version(package.version.text)}-py2.py3-none-any.whl" f"-{escape_version(package.version.text)}-py2.py3-none-any.whl"
) )
] ]
@contextlib.contextmanager
def isolated_environment(
environ: dict[str, Any] | None = None, clear: bool = False
) -> Iterator[None]:
original_environ = dict(os.environ)
if clear:
os.environ.clear()
if environ:
os.environ.update(environ)
yield
os.environ.clear()
os.environ.update(original_environ)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment