1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
|
import pytest
from pdm.models.versions import InvalidPyVersion, Version
def test_unsupported_post_version() -> None:
with pytest.raises(InvalidPyVersion):
Version("3.10.0post1")
def test_support_prerelease_version() -> None:
assert not Version("3.9.0").is_prerelease
v = Version("3.9.0a4")
assert v.is_prerelease
assert str(v) == "3.9.0a4"
assert v.complete() == v
assert v.bump() == Version("3.9.0a5")
assert v.bump(2) == Version("3.9.1")
def test_normalize_non_standard_version():
version = Version("3.9*")
assert str(version) == "3.9.*"
def test_version_comparison():
assert Version("3.9.0") < Version("3.9.1")
assert Version("3.4") < Version("3.9.1")
assert Version("3.7.*") < Version("3.7.5")
assert Version("3.7") == Version((3, 7))
assert Version("3.9.0a") != Version("3.9.0")
assert Version("3.9.0a") == Version("3.9.0a0")
assert Version("3.10.0a9") < Version("3.10.0a12")
assert Version("3.10.0a12") < Version("3.10.0b1")
assert Version("3.7.*") < Version("3.7.1b")
def test_version_is_wildcard():
assert not Version("3").is_wildcard
assert Version("3.*").is_wildcard
def test_version_is_py2():
assert not Version("3.8").is_py2
assert Version("2.7").is_py2
@pytest.mark.parametrize(
"version,args,result",
[("3.9", (), "3.9.0"), ("3.9", ("*",), "3.9.*"), ("3", (0, 2), "3.0")],
)
def test_version_complete(version, args, result):
assert str(Version(version).complete(*args)) == result
@pytest.mark.parametrize(
"version,idx,result",
[
("3.8.0", -1, "3.8.1"),
("3.8", -1, "3.9.0"),
("3", 0, "4.0.0"),
("3.8.1", 1, "3.9.0"),
],
)
def test_version_bump(version, idx, result):
assert str(Version(version).bump(idx)) == result
@pytest.mark.parametrize(
"version,other,result",
[
("3.8.0", "3.8", True),
("3.8.*", "3.8", True),
("3.8.1", "3.7", False),
("3.8", "3.8.2", False),
],
)
def test_version_startswith(version, other, result):
assert Version(version).startswith(Version(other)) is result
def test_version_getitem():
version = Version("3.8.6")
assert version[0] == 3
assert version[1] == 8
assert version[2] == 6
assert version[1:2] == Version("8")
assert version[:-1] == Version("3.8")
def test_version_setitem():
version = Version("3.8.*")
version1 = version.complete()
version1[-1] = 0
assert version1 == Version("3.8.0")
version2 = version.complete()
version2[0] = 4
assert version2 == Version("4.8.*")
version3 = version.complete()
with pytest.raises(TypeError):
version3[:2] = (1, 2)
|