Files
pipenv/tests/unit/test_utils_windows_executable.py
Matt Davis 089bc2dd59 Fix lint
2024-10-22 19:49:33 +02:00

52 lines
1.5 KiB
Python

import os
from unittest import mock
import pytest
from pipenv.utils import shell
# This module is run only on Windows.
pytestmark = pytest.mark.skipif(
os.name != "nt",
reason="only relevant on windows",
)
@pytest.mark.utils
@pytest.mark.skipif(os.name != "nt", reason="Windows test only")
@mock.patch("os.path.isfile")
@mock.patch("shutil.which")
def test_find_windows_executable_when_not_found(mocked_which, mocked_isfile):
mocked_isfile.return_value = False
mocked_which.return_value = None
found = shell.find_windows_executable("fake/path", "python")
assert found is None
assert mocked_isfile.call_count > 1
calls = [mock.call("fake\\path\\python")] + [
mock.call(f"fake\\path\\python{ext.lower()}")
for ext in os.environ["PATHEXT"].split(";")
]
assert mocked_isfile.mock_calls == calls
@pytest.mark.utils
@pytest.mark.skipif(os.name != "nt", reason="Windows test only")
@mock.patch("os.path.isfile")
@mock.patch("shutil.which")
def test_find_windows_executable_when_found(mocked_which, mocked_isfile):
mocked_isfile.return_value = False
found_path = "/fake/known/system/path/pyenv"
mocked_which.return_value = found_path
found = shell.find_windows_executable("fake/path", "pyenv")
assert found is found_path
assert mocked_isfile.call_count > 1
calls = [mock.call("fake\\path\\pyenv")] + [
mock.call(f"fake\\path\\pyenv{ext.lower()}")
for ext in os.environ["PATHEXT"].split(";")
]
assert mocked_isfile.mock_calls == calls