File: test_compare.py

package info (click to toggle)
awesomeversion 25.8.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,304 kB
  • sloc: python: 2,411; sh: 146; makefile: 5
file content (153 lines) | stat: -rw-r--r-- 4,616 bytes parent folder | download | duplicates (2)
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
"""Test compare."""

import pytest

from awesomeversion import AwesomeVersion
from awesomeversion.exceptions import AwesomeVersionCompareException
from awesomeversion.typing import VersionType


@pytest.mark.parametrize(
    "version_a,version_b",
    [
        ("1.0.0-beta.10", "1.0.0-beta.9"),
        ("1.0.0-alpha10", "1.0.0-alpha9"),
        ("2021.2.0", "2021.2.0.dev20210118"),
        ("2021.2.0b0", "2021.2.0.dev20210118"),
        ("2021.2.0", "2021.2.0b0"),
        ("2020.12.1", "2020.12.0"),
        ("2", "1"),
        ("2", 1),
        (2, "1"),
        (2, 1),
        ("5.11", "5.10"),
        ("1.1", "1.0"),
        ("2020", "2019"),
        ("1.2.3.4", "1.2.3"),
        ("2020.1", "2020"),
        ("2020.2.0", "2020.1.1."),
        ("1.2.3.4.5.6.7.8.9", "1"),
        ("2020.12.0", "2020.12.dev1602"),
        ("2020.12.dev1603", "2020.12.dev1602"),
        ("2021.1.0", "2021.1.0b0"),
        ("2021.1.0", "2021.1.0b0"),
        ("2021.1.0", "2021.1.0b1"),
        ("2021.1.0", "2021.1.0dev20210101"),
        ("2021.1.0b0", "2021.1.0a0"),
        ("2021.1.0b1", "2021.1.0b0"),
        ("2021.1.0b1", "2021.1.0dev0"),
        ("2021.1.0b1", "2021.1.0.dev0"),
        ("2021.1.0", "2021.1.0.dev0"),
        ("2021.2.0", "2021.1.0b0"),
        ("2021.2.0b0", "2021.1.0"),
        ("2021.2.0b10", "2021.1.0b2"),
        ("beta", "stable"),
        ("1.2.3-2", "1.2.3-1"),
        ("dev", "latest"),
        ("latest", "2020.21.1"),
        ("latest", "beta"),
        ("1.0.0-beta0", "1.0.0-alpha1"),
        ("1.0.0-beta", "1.0.0-beta.1"),
        ("1.0.0-beta1", "1.0.0-beta"),
        ("1.0.0-beta.2", "1.0.0-beta.1"),
        ("1.0.0-rc0", "1.0.0-alpha1"),
        ("1.0.0-beta", "1.0.0-alpha"),
        ("1.0.0", "1.0.0-beta1"),
        ("1.0.0", "1.0.0-beta"),
        ("6.0.rc1", "6.0.dev20210429"),
        ("6.0", "6.0.rc1"),
        ("1.2.3.4.5.6.7.8", "1.2.3.4.5.6.6.8"),
        ("1.0.0b1", "1.0.0b0"),
        ("1.0.0b10", "1.0.0b9"),
        ("1.0.0", "1.0.0b0"),
        (1.0, "1.0.0rc0"),
        ("0x2df35", "1"),
        ("0x01002604", "0x01002100"),
        ("9", "0x0"),
    ],
)
def test_compare(version_a: VersionType, version_b: VersionType) -> None:
    """Test compare."""
    ver_a = AwesomeVersion(version_a)
    ver_b = AwesomeVersion(version_b)

    assert ver_a > ver_b
    assert ver_a >= ver_b
    assert ver_a != ver_b
    assert ver_a > version_b
    assert ver_a >= version_b
    assert ver_a != version_b
    assert version_a > ver_b
    assert version_a >= ver_b
    assert version_a != ver_b
    assert ver_b < ver_a
    assert ver_b <= ver_a
    assert ver_b < version_a
    assert ver_b <= version_a

    if str(version_a).endswith("."):
        version_a = str(version_a)[:-1]
    if str(version_b).endswith("."):
        version_b = str(version_b)[:-1]

    assert ver_a.string == str(version_a)
    assert ver_b.string == str(version_b)


def test_invalid_compare() -> None:
    """Test invalid compare."""
    invalid = None
    with pytest.raises(
        AwesomeVersionCompareException, match="Not a valid AwesomeVersion object"
    ):
        assert AwesomeVersion("2020.12.1") > invalid

    with pytest.raises(
        AwesomeVersionCompareException, match="Not a valid AwesomeVersion object"
    ):
        assert AwesomeVersion("2020.12.1") < invalid

    with pytest.raises(
        AwesomeVersionCompareException, match="Not a valid AwesomeVersion object"
    ):
        assert AwesomeVersion("2020.12.1") == invalid

    with pytest.raises(
        AwesomeVersionCompareException,
        match="Can't compare <CalVer 2020.12.1> and <unknown string>",
    ):
        assert AwesomeVersion("2020.12.1") > AwesomeVersion("string")

    with pytest.raises(
        AwesomeVersionCompareException,
        match="Can't compare <CalVer 2020.12.1> and <unknown >",
    ):
        assert AwesomeVersion("2020.12.1") < AwesomeVersion("")

    with pytest.raises(
        AwesomeVersionCompareException,
        match="Can't compare <CalVer 2020.12.1> and <unknown None>",
    ):
        assert AwesomeVersion("2020.12.1") < AwesomeVersion(None)


@pytest.mark.parametrize(
    "version",
    [1, "1", 1.0, "1.0", 5.10, "5.10"],
)
def test_falsy_compare(version: VersionType) -> None:
    """Test compare."""
    ver_a = AwesomeVersion(version)
    ver_b = AwesomeVersion(version)

    assert ver_a == ver_b
    assert ver_a <= ver_b
    assert ver_a >= ver_b

    assert not version != ver_b
    assert not version > ver_b
    assert not version < ver_b

    assert not ver_a != version
    assert not ver_a > version
    assert not ver_a < version