summaryrefslogtreecommitdiff
path: root/pylint/testutils
diff options
context:
space:
mode:
authorPierre Sassoulas <pierre.sassoulas@gmail.com>2022-07-10 17:36:56 +0200
committerPierre Sassoulas <pierre.sassoulas@gmail.com>2022-07-11 06:49:50 +0200
commite2b7b2a7436979808adc5a3da0e46766bba9a900 (patch)
tree7f7e30d85565f1b5ec360e61a5ca2ac2d7e6f3a3 /pylint/testutils
parent46abb7246baac1effc68cb73852fb2cead959726 (diff)
downloadpylint-git-e2b7b2a7436979808adc5a3da0e46766bba9a900.tar.gz
[testutils] Add a parameter to context manager changing sys.path or cwd
Diffstat (limited to 'pylint/testutils')
-rw-r--r--pylint/testutils/utils.py14
1 files changed, 12 insertions, 2 deletions
diff --git a/pylint/testutils/utils.py b/pylint/testutils/utils.py
index ee36b2199..40470b016 100644
--- a/pylint/testutils/utils.py
+++ b/pylint/testutils/utils.py
@@ -8,6 +8,8 @@ import contextlib
import os
import sys
from collections.abc import Generator, Iterator
+from copy import copy
+from pathlib import Path
from typing import TextIO
@@ -23,18 +25,26 @@ def _patch_streams(out: TextIO) -> Iterator[None]:
@contextlib.contextmanager
-def _test_sys_path() -> Generator[None, None, None]:
+def _test_sys_path(
+ replacement_sys_path: list[str] | None = None,
+) -> Generator[None, None, None]:
original_path = sys.path
try:
+ if replacement_sys_path is not None:
+ sys.path = copy(replacement_sys_path)
yield
finally:
sys.path = original_path
@contextlib.contextmanager
-def _test_cwd() -> Generator[None, None, None]:
+def _test_cwd(
+ current_working_directory: str | Path | None = None,
+) -> Generator[None, None, None]:
original_dir = os.getcwd()
try:
+ if current_working_directory is not None:
+ os.chdir(current_working_directory)
yield
finally:
os.chdir(original_dir)