From 1678cd67a4a0360eb3bc914b46f137d383467893 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Thu, 11 Mar 2021 12:27:25 +0100 Subject: Fix Chromium version handling with PyQt 5.15.4+ --- qutebrowser/utils/version.py | 19 ++++++++++++++----- tests/unit/utils/test_version.py | 15 ++++++--------- 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py index a741a3584..e61d18448 100644 --- a/qutebrowser/utils/version.py +++ b/qutebrowser/utils/version.py @@ -611,11 +611,20 @@ class WebEngineVersions: chromium_version = cls._CHROMIUM_VERSIONS.get(pyqt_webengine_version) if chromium_version is not None: return chromium_version - # 5.14.2 -> 5.14 - minor_version = utils.VersionNumber( - pyqt_webengine_version.majorVersion(), - pyqt_webengine_version.minorVersion(), - ) + + # 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 + segments = pyqt_webengine_version.segments()[:2] + if segments[-1] == 0: + del segments[-1] + + minor_version = utils.VersionNumber(*segments) + return cls._CHROMIUM_VERSIONS.get(minor_version) @classmethod diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py index f846c91ac..886d50c91 100644 --- a/tests/unit/utils/test_version.py +++ b/tests/unit/utils/test_version.py @@ -956,6 +956,9 @@ class TestWebEngineVersions: ('5.14.2', '77.0.3865.129'), ('5.15.1', '80.0.3987.163'), ('5.15.2', '83.0.4103.122'), + ('5.15.3', '87.0.4280.144'), + ('5.15.4', '87.0.4280.144'), + ('5.15.5', '87.0.4280.144'), ]) def test_from_pyqt(self, qt_version, chromium_version): expected = version.WebEngineVersions( @@ -982,15 +985,9 @@ class TestWebEngineVersions: versions = version.WebEngineVersions.from_pyqt(pyqt_webengine_version) - if pyqt_webengine_version == '5.15.3': - # Transient situation - we expect to get QtWebEngine 5.15.3 soon, - # so this will line up again. - assert versions.chromium == '87.0.4280.144' - pytest.xfail("Transient situation") - else: - from qutebrowser.browser.webengine import webenginesettings - webenginesettings.init_user_agent() - expected = webenginesettings.parsed_user_agent.upstream_browser_version + from qutebrowser.browser.webengine import webenginesettings + webenginesettings.init_user_agent() + expected = webenginesettings.parsed_user_agent.upstream_browser_version assert versions.chromium == expected -- cgit v1.2.3-54-g00ecf