summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2019-12-23 15:30:22 +0100
committerFlorian Bruhin <me@the-compiler.org>2019-12-23 15:30:22 +0100
commitdcf8d833b5342e3121a23f96cb7bf67a029b9421 (patch)
tree38a278032964d75a99639f80eab511769e41094e
parent9ab1ea091ce20e19341d43c9ff11667249f63454 (diff)
downloadqutebrowser-dcf8d833b5342e3121a23f96cb7bf67a029b9421.tar.gz
qutebrowser-dcf8d833b5342e3121a23f96cb7bf67a029b9421.zip
Handle _chromium_version without webenginesettings module
This can happen when we intend to start with the QtWebEngine backend (so _chromium_version will get called), but we don't actually have the QtWebEngine module available. If there's a crash while the backendproblem dialog is shown, this results in webenginesettings being None here.
-rw-r--r--qutebrowser/utils/version.py3
-rw-r--r--tests/unit/utils/test_version.py8
2 files changed, 9 insertions, 2 deletions
diff --git a/qutebrowser/utils/version.py b/qutebrowser/utils/version.py
index 6f8628daf..50a00c20b 100644
--- a/qutebrowser/utils/version.py
+++ b/qutebrowser/utils/version.py
@@ -364,6 +364,9 @@ def _chromium_version() -> str:
Also see https://www.chromium.org/developers/calendar
and https://chromereleases.googleblog.com/
"""
+ if webenginesettings is None:
+ return 'unavailable' # type: ignore
+
if webenginesettings.parsed_user_agent is None:
webenginesettings.init_user_agent()
assert webenginesettings.parsed_user_agent is not None
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index 043621667..d1f692540 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -863,8 +863,12 @@ def test_chromium_version(monkeypatch, caplog):
version.webenginesettings._init_user_agent_str(
_QTWE_USER_AGENT.format(ver))
- with caplog.at_level(logging.ERROR):
- assert version._chromium_version() == ver
+ assert version._chromium_version() == ver
+
+
+def test_chromium_version_no_webengine(monkeypatch):
+ monkeypatch.setattr(version, 'webenginesettings', None)
+ assert version._chromium_version() == 'unavailable'
def test_chromium_version_prefers_saved_user_agent(monkeypatch):