1
1
Fork 0
mirror of https://github.com/pypa/pip synced 2023-12-13 21:30:23 +01:00
pip/tests/functional/test_new_resolver_target.py
Tzu-ping Chung 42359a9605 Migrate tests to use pathlib.Path
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.
2022-06-08 19:58:46 +08:00

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)