Пример #1
0
 def test_not_normalized(self):
     with pytest.raises(ValueError, match='Refusing to construct'):
         VersionNumber(5, 15, 0)
Пример #2
0
class TestVersionNumber:

    @pytest.mark.parametrize('num, expected', [
        (VersionNumber(5, 15, 2), 'VersionNumber(5, 15, 2)'),
        (VersionNumber(5, 15), 'VersionNumber(5, 15)'),
        (VersionNumber(5), 'VersionNumber(5)'),
    ])
    def test_repr(self, num, expected):
        assert repr(num) == expected

    @pytest.mark.parametrize('num, expected', [
        (VersionNumber(5, 15, 2), '5.15.2'),
        (VersionNumber(5, 15), '5.15'),
        (VersionNumber(5), '5'),
        (VersionNumber(1, 2, 3, 4), '1.2.3.4'),
    ])
    def test_str(self, num, expected):
        assert str(num) == expected

    def test_not_normalized(self):
        with pytest.raises(ValueError, match='Refusing to construct'):
            VersionNumber(5, 15, 0)

    @pytest.mark.parametrize('num, expected', [
        (VersionNumber(5, 15, 2), VersionNumber(5, 15)),
        (VersionNumber(5, 15), VersionNumber(5, 15)),
        (VersionNumber(6), VersionNumber(6)),
        (VersionNumber(1, 2, 3, 4), VersionNumber(1, 2)),
    ])
    def test_strip_patch(self, num, expected):
        assert num.strip_patch() == expected

    @pytest.mark.parametrize('s, expected', [
        ('1x6.2', VersionNumber(1)),
        ('6', VersionNumber(6)),
        ('5.15', VersionNumber(5, 15)),
        ('5.15.3', VersionNumber(5, 15, 3)),
        ('5.15.3.dev1234', VersionNumber(5, 15, 3)),
        ('1.2.3.4', VersionNumber(1, 2, 3, 4)),
    ])
    def test_parse_valid(self, s, expected):
        assert VersionNumber.parse(s) == expected

    @pytest.mark.parametrize('s, message', [
        ('foo6', "Failed to parse foo6"),
        ('.6', "Failed to parse .6"),
        ('0x6.2', "Can't construct a null version"),
    ])
    def test_parse_invalid(self, s, message):
        with pytest.raises(ValueError, match=message):
            VersionNumber.parse(s)

    @pytest.mark.parametrize('lhs, op, rhs, outcome', [
        # ==
        (VersionNumber(6), operator.eq, VersionNumber(6), True),
        (VersionNumber(6), operator.eq, object(), False),

        # !=
        (VersionNumber(6), operator.ne, VersionNumber(5), True),
        (VersionNumber(6), operator.ne, object(), True),

        # >=
        (VersionNumber(5, 14), operator.ge, VersionNumber(5, 13, 5), True),
        (VersionNumber(5, 14), operator.ge, VersionNumber(5, 14, 2), False),
        (VersionNumber(5, 14, 3), operator.ge, VersionNumber(5, 14, 2), True),
        (VersionNumber(5, 14, 3), operator.ge, VersionNumber(5, 14, 3), True),
        (VersionNumber(5, 14), operator.ge, VersionNumber(5, 13), True),
        (VersionNumber(5, 14), operator.ge, VersionNumber(5, 14), True),
        (VersionNumber(5, 14), operator.ge, VersionNumber(5, 15), False),
        (VersionNumber(5, 14), operator.ge, VersionNumber(4), True),
        (VersionNumber(5, 14), operator.ge, VersionNumber(5), True),
        (VersionNumber(5, 14), operator.ge, VersionNumber(6), False),

        # >
        (VersionNumber(5, 14), operator.gt, VersionNumber(5, 13, 5), True),
        (VersionNumber(5, 14), operator.gt, VersionNumber(5, 14, 2), False),
        (VersionNumber(5, 14, 3), operator.gt, VersionNumber(5, 14, 2), True),
        (VersionNumber(5, 14, 3), operator.gt, VersionNumber(5, 14, 3), False),
        (VersionNumber(5, 14), operator.gt, VersionNumber(5, 13), True),
        (VersionNumber(5, 14), operator.gt, VersionNumber(5, 14), False),
        (VersionNumber(5, 14), operator.gt, VersionNumber(5, 15), False),
        (VersionNumber(5, 14), operator.gt, VersionNumber(4), True),
        (VersionNumber(5, 14), operator.gt, VersionNumber(5), True),
        (VersionNumber(5, 14), operator.gt, VersionNumber(6), False),

        # <=
        (VersionNumber(5, 14), operator.le, VersionNumber(5, 13, 5), False),
        (VersionNumber(5, 14), operator.le, VersionNumber(5, 14, 2), True),
        (VersionNumber(5, 14, 3), operator.le, VersionNumber(5, 14, 2), False),
        (VersionNumber(5, 14, 3), operator.le, VersionNumber(5, 14, 3), True),
        (VersionNumber(5, 14), operator.le, VersionNumber(5, 13), False),
        (VersionNumber(5, 14), operator.le, VersionNumber(5, 14), True),
        (VersionNumber(5, 14), operator.le, VersionNumber(5, 15), True),
        (VersionNumber(5, 14), operator.le, VersionNumber(4), False),
        (VersionNumber(5, 14), operator.le, VersionNumber(5), False),
        (VersionNumber(5, 14), operator.le, VersionNumber(6), True),

        # <
        (VersionNumber(5, 14), operator.lt, VersionNumber(5, 13, 5), False),
        (VersionNumber(5, 14), operator.lt, VersionNumber(5, 14, 2), True),
        (VersionNumber(5, 14, 3), operator.lt, VersionNumber(5, 14, 2), False),
        (VersionNumber(5, 14, 3), operator.lt, VersionNumber(5, 14, 3), False),
        (VersionNumber(5, 14), operator.lt, VersionNumber(5, 13), False),
        (VersionNumber(5, 14), operator.lt, VersionNumber(5, 14), False),
        (VersionNumber(5, 14), operator.lt, VersionNumber(5, 15), True),
        (VersionNumber(5, 14), operator.lt, VersionNumber(4), False),
        (VersionNumber(5, 14), operator.lt, VersionNumber(5), False),
        (VersionNumber(5, 14), operator.lt, VersionNumber(6), True),
    ])
    def test_comparisons(self, lhs, op, rhs, outcome):
        assert op(lhs, rhs) == outcome