pip/tests/functional/test_new_resolver_target.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

73 lines
2.2 KiB
Python
Raw Normal View History

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 = [
2020-10-30 02:27:08 +01:00
"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]
2023-11-07 10:14:56 +01:00
args_tag = f"{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)