Commit 601dc789 by Adam Gregory Committed by GitHub

Resolve cwd using os.path.realpath() when generating environment names (#6110)

* Resolve cwd using os.path.realpath() when generating environment names

* Add test_generate_env_name_uses_real_path() unit test

* ensure normcase

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

Co-authored-by: Randy Döring <30527984+radoering@users.noreply.github.com>
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
parent 55024b34
...@@ -1145,7 +1145,7 @@ class EnvManager: ...@@ -1145,7 +1145,7 @@ class EnvManager:
def generate_env_name(cls, name: str, cwd: str) -> str: def generate_env_name(cls, name: str, cwd: str) -> str:
name = name.lower() name = name.lower()
sanitized_name = re.sub(r'[ $`!*@"\\\r\n\t]', "_", name)[:42] sanitized_name = re.sub(r'[ $`!*@"\\\r\n\t]', "_", name)[:42]
normalized_cwd = os.path.normcase(cwd) normalized_cwd = os.path.normcase(os.path.realpath(cwd))
h_bytes = hashlib.sha256(encode(normalized_cwd)).digest() h_bytes = hashlib.sha256(encode(normalized_cwd)).digest()
h_str = base64.urlsafe_b64encode(h_bytes).decode()[:8] h_str = base64.urlsafe_b64encode(h_bytes).decode()[:8]
......
...@@ -1362,6 +1362,13 @@ def test_generate_env_name_ignores_case_for_case_insensitive_fs(tmp_dir: str): ...@@ -1362,6 +1362,13 @@ def test_generate_env_name_ignores_case_for_case_insensitive_fs(tmp_dir: str):
assert venv_name1 != venv_name2 assert venv_name1 != venv_name2
def test_generate_env_name_uses_real_path(tmp_dir: str, mocker: MockerFixture):
mocker.patch("os.path.realpath", return_value="the_real_dir")
venv_name1 = EnvManager.generate_env_name("simple-project", "the_real_dir")
venv_name2 = EnvManager.generate_env_name("simple-project", "linked_dir")
assert venv_name1 == venv_name2
@pytest.fixture() @pytest.fixture()
def extended_without_setup_poetry() -> Poetry: def extended_without_setup_poetry() -> Poetry:
poetry = Factory().create_poetry( poetry = Factory().create_poetry(
......
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