mirror of
https://github.com/pypa/pipenv.git
synced 2026-05-07 00:39:57 -04:00
52 lines
1.5 KiB
Python
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
|