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
from tests.helpers import TestLocker
from tests.helpers import TestRepository
from tests.helpers import get_package
from tests.helpers import isolated_environment
from tests.helpers import mock_clone
from tests.helpers import mock_download
......@@ -246,27 +247,19 @@ def pep517_metadata_mock(mocker: MockerFixture) -> None:
@pytest.fixture
def environ() -> Iterator[None]:
original_environ = dict(os.environ)
yield
os.environ.clear()
os.environ.update(original_environ)
with isolated_environment():
yield
@pytest.fixture(autouse=True)
def isolate_environ() -> Iterator[None]:
"""Ensure the environment is isolated from user configuration."""
original_environ = dict(os.environ)
for var in os.environ:
if var.startswith("POETRY_"):
del os.environ[var]
yield
with isolated_environment():
for var in os.environ:
if var.startswith("POETRY_") or var in {"PYTHONPATH", "VIRTUAL_ENV"}:
del os.environ[var]
os.environ.clear()
os.environ.update(original_environ)
yield
@pytest.fixture(autouse=True)
......
from __future__ import annotations
import contextlib
import os
import re
import shutil
......@@ -9,6 +10,7 @@ import urllib.parse
from pathlib import Path
from typing import TYPE_CHECKING
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_version
......@@ -230,3 +232,21 @@ class TestRepository(Repository):
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