1
1
Fork 0
mirror of https://github.com/pypa/pip synced 2023-12-13 21:30:23 +01:00
pip/tests/unit/test_cmdoptions.py

31 lines
1 KiB
Python

from typing import Optional, Tuple
import pytest
from pip._internal.cli.cmdoptions import _convert_python_version
@pytest.mark.parametrize(
"value, expected",
[
("", (None, None)),
("2", ((2,), None)),
("3", ((3,), None)),
("3.7", ((3, 7), None)),
("3.7.3", ((3, 7, 3), None)),
# Test strings without dots of length bigger than 1.
("34", ((3, 4), None)),
# Test a 2-digit minor version.
("310", ((3, 10), None)),
# Test some values that fail to parse.
("ab", ((), "each version part must be an integer")),
("3a", ((), "each version part must be an integer")),
("3.7.a", ((), "each version part must be an integer")),
("3.7.3.1", ((), "at most three version parts are allowed")),
],
)
def test_convert_python_version(
value: str, expected: Tuple[Optional[Tuple[int, ...]], Optional[str]]
) -> None:
actual = _convert_python_version(value)
assert actual == expected, f"actual: {actual!r}"