qt 6: Fix getting importlib PyQtWebEngine versions
Needed for e.g. Windows and PyQt < 6.3.1
This commit is contained in:
parent
c0ffd6d327
commit
46933168fe
|
|
@ -37,7 +37,7 @@ import dataclasses
|
|||
from typing import (Mapping, Optional, Sequence, Tuple, ClassVar, Dict, cast,
|
||||
TYPE_CHECKING)
|
||||
|
||||
|
||||
from qutebrowser.qt import machinery
|
||||
from qutebrowser.qt.core import PYQT_VERSION_STR
|
||||
from qutebrowser.qt.network import QSslSocket
|
||||
from qutebrowser.qt.gui import QOpenGLContext, QOffscreenSurface
|
||||
|
|
@ -521,11 +521,17 @@ def _get_pyqt_webengine_qt_version() -> Optional[str]:
|
|||
log.misc.debug("Neither importlib.metadata nor backport available")
|
||||
return None
|
||||
|
||||
for suffix in ['Qt5', 'Qt']:
|
||||
names = (
|
||||
['PyQt6-WebEngine-Qt6']
|
||||
if machinery.IS_QT6 else
|
||||
['PyQtWebEngine-Qt5', 'PyQtWebEngine-Qt']
|
||||
)
|
||||
|
||||
for name in names:
|
||||
try:
|
||||
return importlib_metadata.version(f'PyQtWebEngine-{suffix}')
|
||||
return importlib_metadata.version(name)
|
||||
except importlib_metadata.PackageNotFoundError:
|
||||
log.misc.debug(f"PyQtWebEngine-{suffix} not found")
|
||||
log.misc.debug(f"{name} not found")
|
||||
|
||||
return None
|
||||
|
||||
|
|
|
|||
|
|
@ -1117,7 +1117,7 @@ class TestChromiumVersion:
|
|||
@pytest.fixture
|
||||
def importlib_patcher(self, monkeypatch):
|
||||
"""Patch the importlib module."""
|
||||
def _patch(*, qt, qt5):
|
||||
def _patch(*, qt, qt5, qt6):
|
||||
try:
|
||||
import importlib.metadata as importlib_metadata
|
||||
except ImportError:
|
||||
|
|
@ -1128,8 +1128,10 @@ class TestChromiumVersion:
|
|||
outcome = qt
|
||||
elif name == 'PyQtWebEngine-Qt5':
|
||||
outcome = qt5
|
||||
elif name == 'PyQt6-WebEngine-Qt6':
|
||||
outcome = qt6
|
||||
else:
|
||||
raise utils.Unreachable(outcome)
|
||||
raise utils.Unreachable(name)
|
||||
|
||||
if outcome is None:
|
||||
raise importlib_metadata.PackageNotFoundError(name)
|
||||
|
|
@ -1141,8 +1143,8 @@ class TestChromiumVersion:
|
|||
|
||||
@pytest.fixture
|
||||
def patch_importlib_no_package(self, importlib_patcher):
|
||||
"""Simulate importlib not finding PyQtWebEngine-Qt[5]."""
|
||||
importlib_patcher(qt=None, qt5=None)
|
||||
"""Simulate importlib not finding PyQtWebEngine Qt packages."""
|
||||
importlib_patcher(qt=None, qt5=None, qt6=None)
|
||||
|
||||
@pytest.mark.parametrize('patches, sources', [
|
||||
(['no_api'], ['ELF', 'importlib', 'PyQt', 'Qt']),
|
||||
|
|
@ -1164,17 +1166,41 @@ class TestChromiumVersion:
|
|||
versions = version.qtwebengine_versions(avoid_init=True)
|
||||
assert versions.source in sources
|
||||
|
||||
@pytest.mark.parametrize('qt, qt5, expected', [
|
||||
(None, '5.15.4', utils.VersionNumber(5, 15, 4)),
|
||||
('5.15.3', None, utils.VersionNumber(5, 15, 3)),
|
||||
('5.15.3', '5.15.4', utils.VersionNumber(5, 15, 4)), # -Qt5 takes precedence
|
||||
@pytest.mark.parametrize('qt, qt5, qt6, expected', [
|
||||
pytest.param(
|
||||
None, None, '6.3.0',
|
||||
utils.VersionNumber(6, 3),
|
||||
marks=pytest.mark.qt6_only,
|
||||
),
|
||||
pytest.param(
|
||||
'5.15.3', '5.15.4', '6.3.0',
|
||||
utils.VersionNumber(6, 3),
|
||||
marks=pytest.mark.qt6_only,
|
||||
),
|
||||
|
||||
pytest.param(
|
||||
None, '5.15.4', None,
|
||||
utils.VersionNumber(5, 15, 4),
|
||||
marks=pytest.mark.qt5_only,
|
||||
),
|
||||
pytest.param(
|
||||
'5.15.3', None, None,
|
||||
utils.VersionNumber(5, 15, 3),
|
||||
marks=pytest.mark.qt5_only,
|
||||
),
|
||||
# -Qt5 takes precedence
|
||||
pytest.param(
|
||||
'5.15.3', '5.15.4', None,
|
||||
utils.VersionNumber(5, 15, 4),
|
||||
marks=pytest.mark.qt5_only,
|
||||
),
|
||||
])
|
||||
def test_importlib(self, qt, qt5, expected, patch_elf_fail, patch_no_api, importlib_patcher):
|
||||
def test_importlib(self, qt, qt5, qt6, expected, patch_elf_fail, patch_no_api, importlib_patcher):
|
||||
"""Test the importlib version logic with different Qt packages.
|
||||
|
||||
With PyQtWebEngine 5.15.4, PyQtWebEngine-Qt was renamed to PyQtWebEngine-Qt5.
|
||||
"""
|
||||
importlib_patcher(qt=qt, qt5=qt5)
|
||||
importlib_patcher(qt=qt, qt5=qt5, qt6=qt6)
|
||||
versions = version.qtwebengine_versions(avoid_init=True)
|
||||
assert versions.source == 'importlib'
|
||||
assert versions.webengine == expected
|
||||
|
|
|
|||
Loading…
Reference in New Issue