mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
42359a9605
The pip-specific Path implementation has been removed, and all its usages replaced by pathlib.Path. The tmpdir and tmpdir_factory fixtures are also removed, and all usages are replaced by tmp_path and tmp_path_factory, which use pathlib.Path. The pip() function now also accepts pathlib.Path so we don't need to put str() everywhere. Path arguments are coerced with os.fspath() into str.
77 lines
2.3 KiB
Python
77 lines
2.3 KiB
Python
from pathlib import Path
|
|
from typing import Callable, Optional
|
|
|
|
import pytest
|
|
|
|
from pip._internal.cli.status_codes import ERROR, SUCCESS
|
|
from tests.lib import PipTestEnvironment
|
|
from tests.lib.wheel import make_wheel
|
|
|
|
MakeFakeWheel = Callable[[str], str]
|
|
|
|
|
|
@pytest.fixture()
|
|
def make_fake_wheel(script: PipTestEnvironment) -> MakeFakeWheel:
|
|
def _make_fake_wheel(wheel_tag: str) -> str:
|
|
wheel_house = script.scratch_path.joinpath("wheelhouse")
|
|
wheel_house.mkdir()
|
|
wheel_builder = make_wheel(
|
|
name="fake",
|
|
version="1.0",
|
|
wheel_metadata_updates={"Tag": []},
|
|
)
|
|
wheel_path = wheel_house.joinpath(f"fake-1.0-{wheel_tag}.whl")
|
|
wheel_builder.save_to(wheel_path)
|
|
return str(wheel_path)
|
|
|
|
return _make_fake_wheel
|
|
|
|
|
|
@pytest.mark.parametrize("implementation", [None, "fakepy"])
|
|
@pytest.mark.parametrize("python_version", [None, "1"])
|
|
@pytest.mark.parametrize("abi", [None, "fakeabi"])
|
|
@pytest.mark.parametrize("platform", [None, "fakeplat"])
|
|
def test_new_resolver_target_checks_compatibility_failure(
|
|
script: PipTestEnvironment,
|
|
make_fake_wheel: MakeFakeWheel,
|
|
implementation: Optional[str],
|
|
python_version: Optional[str],
|
|
abi: Optional[str],
|
|
platform: Optional[str],
|
|
) -> None:
|
|
fake_wheel_tag = "fakepy1-fakeabi-fakeplat"
|
|
args = [
|
|
"install",
|
|
"--only-binary=:all:",
|
|
"--no-cache-dir",
|
|
"--no-index",
|
|
"--target",
|
|
str(script.scratch_path.joinpath("target")),
|
|
make_fake_wheel(fake_wheel_tag),
|
|
]
|
|
if implementation:
|
|
args += ["--implementation", implementation]
|
|
if python_version:
|
|
args += ["--python-version", python_version]
|
|
if abi:
|
|
args += ["--abi", abi]
|
|
if platform:
|
|
args += ["--platform", platform]
|
|
|
|
args_tag = "{}{}-{}-{}".format(
|
|
implementation,
|
|
python_version,
|
|
abi,
|
|
platform,
|
|
)
|
|
wheel_tag_matches = args_tag == fake_wheel_tag
|
|
|
|
result = script.pip(*args, expect_error=(not wheel_tag_matches))
|
|
|
|
dist_info = Path("scratch", "target", "fake-1.0.dist-info")
|
|
if wheel_tag_matches:
|
|
assert result.returncode == SUCCESS
|
|
result.did_create(dist_info)
|
|
else:
|
|
assert result.returncode == ERROR
|
|
result.did_not_create(dist_info)
|