def sandbox_patch(self, monkeypatch): info = version.DistributionInfo( id='org.kde.Platform', parsed=version.Distribution.kde_flatpak, version=VersionNumber.parse('5.12'), pretty='Unknown') monkeypatch.setattr(version, 'distribution', lambda: info)
def _infer_chromium_version( cls, pyqt_webengine_version: utils.VersionNumber, ) -> Optional[str]: """Infer the Chromium version based on the PyQtWebEngine version.""" chromium_version = cls._CHROMIUM_VERSIONS.get(pyqt_webengine_version) if chromium_version is not None: return chromium_version # 5.15 patch versions change their QtWebEngine version, but no changes are # expected after 5.15.3. v5_15_3 = utils.VersionNumber(5, 15, 3) if v5_15_3 <= pyqt_webengine_version < utils.VersionNumber(6): minor_version = v5_15_3 else: # e.g. 5.14.2 -> 5.14 minor_version = pyqt_webengine_version.strip_patch() return cls._CHROMIUM_VERSIONS.get(minor_version)
def test_parse_invalid(self, s, message): with pytest.raises(ValueError, match=message): VersionNumber.parse(s)
def test_parse_valid(self, s, expected): assert VersionNumber.parse(s) == expected
def test_not_normalized(self): with pytest.raises(ValueError, match='Refusing to construct'): VersionNumber(5, 15, 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