summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-03-11 14:10:04 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-03-11 14:17:32 +0100
commit2ab205b70e1000217882125dd392dae41de1a346 (patch)
tree1f9905aa8e4618fdb6af72dbd95838fb0d93022d
parenta1b14f7b3561c1f8ed34a16c9bebc666df112385 (diff)
downloadqutebrowser-2ab205b70e1000217882125dd392dae41de1a346.tar.gz
qutebrowser-2ab205b70e1000217882125dd392dae41de1a346.zip
Improve tests for importlib
-rw-r--r--tests/unit/utils/test_version.py53
1 files changed, 42 insertions, 11 deletions
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index 886d50c91..b7da60011 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -1076,18 +1076,34 @@ class TestChromiumVersion:
import_fake.patch()
@pytest.fixture
- def patch_importlib_no_package(self, monkeypatch):
- """Simulate importlib not finding PyQtWebEngine-Qt."""
- try:
- import importlib.metadata as importlib_metadata
- except ImportError:
- importlib_metadata = pytest.importorskip("importlib_metadata")
-
- def _fake_version(name):
- assert name == 'PyQtWebEngine-Qt'
- raise importlib_metadata.PackageNotFoundError(name)
+ def importlib_patcher(self, monkeypatch):
+ """Patch the importlib module."""
+ def _patch(*, qt, qt5):
+ try:
+ import importlib.metadata as importlib_metadata
+ except ImportError:
+ importlib_metadata = pytest.importorskip("importlib_metadata")
+
+ def _fake_version(name):
+ if name == 'PyQtWebEngine-Qt':
+ outcome = qt
+ elif name == 'PyQtWebEngine-Qt5':
+ outcome = qt5
+ else:
+ raise utils.Unreachable(outcome)
+
+ if outcome is None:
+ raise importlib_metadata.PackageNotFoundError(name)
+ return outcome
+
+ monkeypatch.setattr(importlib_metadata, 'version', _fake_version)
+
+ return _patch
- monkeypatch.setattr(importlib_metadata, 'version', _fake_version)
+ @pytest.fixture
+ def patch_importlib_no_package(self, importlib_patcher):
+ """Simulate importlib not finding PyQtWebEngine-Qt[5]."""
+ importlib_patcher(qt=None, qt5=None)
@pytest.mark.parametrize('patches, sources', [
(['elf_fail'], ['importlib', 'PyQt', 'Qt']),
@@ -1111,6 +1127,21 @@ 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
+ ])
+ def test_importlib(self, qt, qt5, expected, patch_elf_fail, 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)
+ versions = version.qtwebengine_versions(avoid_init=True)
+ assert versions.source == 'importlib'
+ assert versions.webengine == expected
+
@dataclasses.dataclass
class VersionParams: