summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJimmy <jimmy@spalge.com>2022-04-17 17:00:47 +1200
committerJimmy <jimmy@spalge.com>2022-04-30 19:30:49 +1200
commite2b00c349c07e315260314d5ad8d9a0b2f29a625 (patch)
tree623f3d58a4f05ddeb506b33ecd3e4e3b39894a59
parent81e802faaf08b0e6712b2092741c3e837e9f5af5 (diff)
downloadqutebrowser-e2b00c349c07e315260314d5ad8d9a0b2f29a625.tar.gz
qutebrowser-e2b00c349c07e315260314d5ad8d9a0b2f29a625.zip
Adjust backend conditional imports for new wrapper
Partially corrects "Manual fixups for ImportErrors lost in rewrite" Instead of looking for import errors looks for attributes being None. have conditional defaults. In qlocalsocket_mock I had to move the original attribute gathering to even earlier otherwise we were just picking up mocks.
-rw-r--r--qutebrowser/config/qtargs.py7
-rw-r--r--qutebrowser/utils/qtutils.py8
-rw-r--r--qutebrowser/utils/version.py8
-rw-r--r--tests/helpers/fixtures.py5
-rw-r--r--tests/unit/misc/test_ipc.py17
-rw-r--r--tests/unit/utils/test_standarddir.py5
-rw-r--r--tests/unit/utils/test_version.py4
7 files changed, 33 insertions, 21 deletions
diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py
index 540f334df..01a5c1d97 100644
--- a/qutebrowser/config/qtargs.py
+++ b/qutebrowser/config/qtargs.py
@@ -28,7 +28,7 @@ from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple
from qutebrowser.config import config
from qutebrowser.misc import objects
from qutebrowser.utils import usertypes, qtutils, utils, log, version
-from qutebrowser.qt import QtCore
+from qutebrowser.qt import QtCore, QtWebEngine
_ENABLE_FEATURES = '--enable-features='
@@ -60,10 +60,7 @@ def qt_args(namespace: argparse.Namespace) -> List[str]:
assert objects.backend == usertypes.Backend.QtWebKit, objects.backend
return argv
- try:
- # pylint: disable=unused-import
- from qutebrowser.browser.webengine import webenginesettings
- except ImportError:
+ if not QtWebEngine:
# This code runs before a QApplication is available, so before
# backendproblem.py is run to actually inform the user of the missing
# backend. Thus, we could end up in a situation where we're here, but
diff --git a/qutebrowser/utils/qtutils.py b/qutebrowser/utils/qtutils.py
index bf109095e..9b0186b55 100644
--- a/qutebrowser/utils/qtutils.py
+++ b/qutebrowser/utils/qtutils.py
@@ -34,7 +34,9 @@ import contextlib
from typing import (Any, AnyStr, TYPE_CHECKING, BinaryIO, IO, Iterator,
Optional, Union, Tuple, cast)
from qutebrowser.qt import QtWebKit, QtGui
-if not QtWebKit:
+if QtWebKit:
+ qWebKitVersion = QtWebKit.qWebKitVersion # noqa: N816
+else:
qWebKitVersion = None # type: ignore[assignment] # noqa: N816
if TYPE_CHECKING:
from qutebrowser.qt import QWebHistory
@@ -111,8 +113,8 @@ MAX_WORLD_ID = 256
def is_new_qtwebkit() -> bool:
"""Check if the given version is a new QtWebKit."""
- assert QtWebKit.qWebKitVersion is not None
- return (utils.VersionNumber.parse(QtWebKit.qWebKitVersion()) >
+ assert qWebKitVersion is not None
+ return (utils.VersionNumber.parse(qWebKitVersion()) >
utils.VersionNumber.parse('538.1'))
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 18a6d7e27..7e819e9ab 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -38,8 +38,10 @@ from typing import (Mapping, Optional, Sequence, Tuple, ClassVar, Dict, cast,
TYPE_CHECKING)
from qutebrowser.qt import QtWidgets, QtWebKit, QtWebEngine, QtNetwork
-if not QtWebKit:
- qWebKitVersion = None
+if QtWebKit:
+ qWebKitVersion = QtWebKit.qWebKitVersion # noqa: N816
+else:
+ qWebKitVersion = None # noqa: N816
if QtWebEngine:
PYQT_WEBENGINE_VERSION_STR = QtWebEngine.PYQT_WEBENGINE_VERSION_STR
else:
@@ -765,7 +767,7 @@ def qtwebengine_versions(*, avoid_init: bool = False) -> WebEngineVersions:
def _backend() -> str:
"""Get the backend line with relevant information."""
if objects.backend == usertypes.Backend.QtWebKit:
- return 'new QtWebKit (WebKit {})'.format(QtWebKit.qWebKitVersion())
+ return 'new QtWebKit (WebKit {})'.format(qWebKitVersion())
elif objects.backend == usertypes.Backend.QtWebEngine:
return str(qtwebengine_versions(
avoid_init='avoid-chromium-init' in objects.debug_flags))
diff --git a/tests/helpers/fixtures.py b/tests/helpers/fixtures.py
index d825ea7fc..ebd9dcde2 100644
--- a/tests/helpers/fixtures.py
+++ b/tests/helpers/fixtures.py
@@ -173,15 +173,14 @@ def greasemonkey_manager(monkeypatch, data_tmpdir, config_tmpdir):
@pytest.fixture(scope='session')
def testdata_scheme(qapp):
- try:
+ from qutebrowser.qt import QtWebEngine
+ if QtWebEngine:
global _qute_scheme_handler
from qutebrowser.browser.webengine import webenginequtescheme
webenginequtescheme.init()
_qute_scheme_handler = webenginequtescheme.QuteSchemeHandler(
parent=qapp)
_qute_scheme_handler.install(QtWebEngineWidgets.QWebEngineProfile.defaultProfile())
- except ImportError:
- pass
@qutescheme.add_handler('testdata')
def handler(url):
diff --git a/tests/unit/misc/test_ipc.py b/tests/unit/misc/test_ipc.py
index 7e0ffb98b..fdd543d2a 100644
--- a/tests/unit/misc/test_ipc.py
+++ b/tests/unit/misc/test_ipc.py
@@ -661,12 +661,21 @@ class TestSendOrListen:
@pytest.fixture
def qlocalsocket_mock(self, mocker):
+ original_errors = {
+ name: getattr(QtNetwork.QLocalSocket, name)
+ for name in
+ [
+ 'UnknownSocketError',
+ 'UnconnectedState',
+ 'ConnectionRefusedError',
+ 'ServerNotFoundError',
+ 'PeerClosedError'
+ ]
+ }
m = mocker.patch('qutebrowser.misc.ipc.QtNetwork.QLocalSocket', autospec=True)
m().errorString.return_value = "Error string"
- for name in ['UnknownSocketError', 'UnconnectedState',
- 'ConnectionRefusedError', 'ServerNotFoundError',
- 'PeerClosedError']:
- setattr(m, name, getattr(QtNetwork.QLocalSocket, name))
+ for name, error in original_errors.items():
+ setattr(m, name, error)
return m
@pytest.mark.linux(reason="Flaky on Windows and macOS")
diff --git a/tests/unit/utils/test_standarddir.py b/tests/unit/utils/test_standarddir.py
index e1c0a3f6d..e601f1213 100644
--- a/tests/unit/utils/test_standarddir.py
+++ b/tests/unit/utils/test_standarddir.py
@@ -471,7 +471,10 @@ def test_no_qapplication(qapp, tmpdir, monkeypatch):
sys.path = sys.argv[1:] # make sure we have the same python path
- from PyQt5.QtWidgets import QApplication
+ try:
+ from PyQt5.QtWidgets import QApplication
+ except ImportError:
+ from PyQt6.QtWidgets import QApplication
from qutebrowser.utils import standarddir
assert QApplication.instance() is None
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index 929d69d99..3ffb4cdea 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -42,9 +42,9 @@ from qutebrowser.misc import pastebin, objects, elf
from qutebrowser.browser import pdfjs
from helpers import testutils
-try:
+if QtWebEngine:
from qutebrowser.browser.webengine import webenginesettings
-except ImportError:
+else:
webenginesettings = None