mirror of
https://github.com/pypa/pip
synced 2023-12-13 21:30:23 +01:00
98d8401035
Co-authored-by: Pradyun Gedam <pradyunsg@gmail.com>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
from typing import Optional, Tuple
|
|
|
|
import pytest
|
|
from pip._vendor.packaging import specifiers
|
|
from pip._vendor.packaging.requirements import Requirement
|
|
|
|
from pip._internal.utils.packaging import check_requires_python, get_requirement
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"version_info, requires_python, expected",
|
|
[
|
|
((3, 6, 5), "== 3.6.4", False),
|
|
((3, 6, 5), "== 3.6.5", True),
|
|
((3, 6, 5), None, True),
|
|
],
|
|
)
|
|
def test_check_requires_python(
|
|
version_info: Tuple[int, int, int], requires_python: Optional[str], expected: bool
|
|
) -> None:
|
|
actual = check_requires_python(requires_python, version_info)
|
|
assert actual == expected
|
|
|
|
|
|
def test_check_requires_python__invalid() -> None:
|
|
"""
|
|
Test an invalid Requires-Python value.
|
|
"""
|
|
with pytest.raises(specifiers.InvalidSpecifier):
|
|
check_requires_python("invalid", (3, 6, 5))
|
|
|
|
|
|
def test_get_or_create_caching() -> None:
|
|
"""test caching of get_or_create requirement"""
|
|
teststr = "affinegap==1.10"
|
|
from_helper = get_requirement(teststr)
|
|
freshly_made = Requirement(teststr)
|
|
|
|
# Requirement doesn't have an equality operator (yet) so test
|
|
# equality of attribute for list of attributes
|
|
for iattr in ["name", "url", "extras", "specifier", "marker"]:
|
|
assert getattr(from_helper, iattr) == getattr(freshly_made, iattr)
|
|
assert get_requirement(teststr) is not Requirement(teststr)
|
|
assert get_requirement(teststr) is get_requirement(teststr)
|