summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2021-03-18 10:54:59 +0100
committerFlorian Bruhin <me@the-compiler.org>2021-03-18 10:55:22 +0100
commitfb0154ae26b09accc08c9ab7fa7cbcbe9fe2578c (patch)
tree31fad944ee798a76d93f4330c069bb4c76f2f366
parent8adac6948bb5c8b41da4650229f8c3469f7ee033 (diff)
downloadqutebrowser-fb0154ae26b09accc08c9ab7fa7cbcbe9fe2578c.tar.gz
qutebrowser-fb0154ae26b09accc08c9ab7fa7cbcbe9fe2578c.zip
Import webenginesettings lazily in version
-rw-r--r--qutebrowser/utils/standarddir.py3
-rw-r--r--qutebrowser/utils/version.py8
-rw-r--r--tests/unit/utils/test_version.py19
3 files changed, 12 insertions, 18 deletions
diff --git a/qutebrowser/utils/standarddir.py b/qutebrowser/utils/standarddir.py
index 4a571696f..4ea7e5dbf 100644
--- a/qutebrowser/utils/standarddir.py
+++ b/qutebrowser/utils/standarddir.py
@@ -30,7 +30,7 @@ from typing import Iterator, Optional
from PyQt5.QtCore import QStandardPaths
from PyQt5.QtWidgets import QApplication
-from qutebrowser.utils import log, debug, utils
+from qutebrowser.utils import log, debug, utils, version
# The cached locations
_locations = {}
@@ -232,7 +232,6 @@ def _init_runtime(args: Optional[argparse.Namespace]) -> None:
# Unfortunately this path could get too long for sockets (which have a
# maximum length of 104 chars), so we don't add the username here...
- from qutebrowser.utils import version
if version.is_sandboxed():
*parts, app_name = os.path.split(path)
assert app_name == APPNAME, app_name
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 97b286fba..63097bb8b 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -58,12 +58,6 @@ from qutebrowser.misc import objects, earlyinit, sql, httpclient, pastebin, elf
from qutebrowser.browser import pdfjs
from qutebrowser.config import config, websettings
-try:
- from qutebrowser.browser.webengine import webenginesettings
-except ImportError: # pragma: no cover
- webenginesettings = None # type: ignore[assignment]
-
-
_LOGO = r'''
______ ,,
,.-"` | ,-` |
@@ -684,7 +678,7 @@ def qtwebengine_versions(avoid_init: bool = False) -> WebEngineVersions:
- https://www.chromium.org/developers/calendar
- https://chromereleases.googleblog.com/
"""
- assert webenginesettings is not None
+ from qutebrowser.browser.webengine import webenginesettings
if webenginesettings.parsed_user_agent is None and not avoid_init:
webenginesettings.init_user_agent()
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index c91017e84..4b01be537 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -40,6 +40,11 @@ from qutebrowser.utils import version, usertypes, utils, standarddir
from qutebrowser.misc import pastebin, objects, elf
from qutebrowser.browser import pdfjs
+try:
+ from qutebrowser.browser.webengine import webenginesettings
+except ImportError:
+ webenginesettings = None
+
@pytest.mark.parametrize('os_release, expected', [
# No file
@@ -1004,7 +1009,6 @@ class TestWebEngineVersions:
versions = version.WebEngineVersions.from_pyqt(pyqt_webengine_version)
- from qutebrowser.browser.webengine import webenginesettings
webenginesettings.init_user_agent()
expected = webenginesettings.parsed_user_agent.upstream_browser_version
@@ -1045,26 +1049,24 @@ class TestChromiumVersion:
@pytest.fixture(autouse=True)
def clear_parsed_ua(self, monkeypatch):
pytest.importorskip('PyQt5.QtWebEngineWidgets')
- if version.webenginesettings is not None:
+ if webenginesettings is not None:
# Not available with QtWebKit
- monkeypatch.setattr(version.webenginesettings, 'parsed_user_agent', None)
+ monkeypatch.setattr(webenginesettings, 'parsed_user_agent', None)
def test_fake_ua(self, monkeypatch, caplog):
ver = '77.0.3865.98'
- version.webenginesettings._init_user_agent_str(
- _QTWE_USER_AGENT.format(ver))
+ webenginesettings._init_user_agent_str(_QTWE_USER_AGENT.format(ver))
assert version.qtwebengine_versions().chromium == ver
def test_prefers_saved_user_agent(self, monkeypatch):
- version.webenginesettings._init_user_agent_str(_QTWE_USER_AGENT.format('87'))
+ webenginesettings._init_user_agent_str(_QTWE_USER_AGENT.format('87'))
class FakeProfile:
def defaultProfile(self):
raise AssertionError("Should not be called")
- monkeypatch.setattr(version.webenginesettings, 'QWebEngineProfile',
- FakeProfile())
+ monkeypatch.setattr(webenginesettings, 'QWebEngineProfile', FakeProfile())
version.qtwebengine_versions()
@@ -1250,7 +1252,6 @@ def test_version_info(params, stubs, monkeypatch, config_stub):
if params.with_webkit:
patches['qWebKitVersion'] = lambda: 'WEBKIT VERSION'
patches['objects.backend'] = usertypes.Backend.QtWebKit
- patches['webenginesettings'] = None
substitutions['backend'] = 'new QtWebKit (WebKit WEBKIT VERSION)'
else:
monkeypatch.delattr(version, 'qtutils.qWebKitVersion', raising=False)