summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2023-06-23 23:28:57 +0200
committerFlorian Bruhin <me@the-compiler.org>2023-06-23 23:28:57 +0200
commit220337f8700ecd83b53b19c7cada26acdc31e481 (patch)
treeb8c3cf11c6a613f0aa071583d3fec731341524e3
parentef3d5084e8c244e54c7a439ad867197b3d13610e (diff)
downloadqutebrowser-220337f8700ecd83b53b19c7cada26acdc31e481.tar.gz
qutebrowser-220337f8700ecd83b53b19c7cada26acdc31e481.zip
tests: Add a test for implicit Qt init
-rw-r--r--tests/unit/test_qt_machinery.py30
1 files changed, 29 insertions, 1 deletions
diff --git a/tests/unit/test_qt_machinery.py b/tests/unit/test_qt_machinery.py
index 53a715262..b5adc9b24 100644
--- a/tests/unit/test_qt_machinery.py
+++ b/tests/unit/test_qt_machinery.py
@@ -24,10 +24,13 @@ import sys
import html
import argparse
import typing
-from typing import Any, Optional, List, Dict, Union
+import pkgutil
+import importlib
+from typing import Any, Optional, List, Dict, Union, Iterator
import pytest
+from qutebrowser import qt
from qutebrowser.qt import machinery
@@ -446,3 +449,28 @@ class TestInit:
actual_vars = {var: getattr(machinery, var) for var in bool_vars}
assert expected_vars == actual_vars
+
+
+def _find_qt_packages() -> Iterator[str]:
+ """Find all Qt wrapper modules."""
+ for _finder, name, is_pkg in pkgutil.walk_packages(
+ path=qt.__path__,
+ prefix=qt.__name__ + ".",
+ ):
+ assert not is_pkg, name
+ if name != machinery.__name__:
+ yield name
+
+
+@pytest.mark.parametrize("package", _find_qt_packages())
+def test_implicit_init(package: str, monkeypatch: pytest.MonkeyPatch):
+ """Make sure importing any Qt submodule does an implicit init."""
+ monkeypatch.delitem(sys.modules, package, raising=False)
+ assert not machinery._initialized
+
+ try:
+ importlib.import_module(package)
+ except machinery.Unavailable as e:
+ pytest.skip(f"{package} not available: {e}")
+
+ assert machinery._initialized