diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index 7eec9d988..42e4eaeb7 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -393,7 +393,7 @@ class Config(QObject): def _set_value(self, opt, value): """Set the given option to the given value.""" - if objects.backend is not None: + if not isinstance(objects.backend, objects.NoBackend): if objects.backend not in opt.backends: raise configexc.BackendError(objects.backend) diff --git a/qutebrowser/misc/objects.py b/qutebrowser/misc/objects.py index 9af210498..60d764620 100644 --- a/qutebrowser/misc/objects.py +++ b/qutebrowser/misc/objects.py @@ -22,5 +22,14 @@ # NOTE: We need to be careful with imports here, as this is imported from # earlyinit. + +class NoBackend: + + """Special object when there's no backend set so we notice that.""" + + def __eq__(self, other): + raise AssertionError("No backend set!") + + # A usertypes.Backend member -backend = None +backend = NoBackend() diff --git a/tests/unit/misc/test_objects.py b/tests/unit/misc/test_objects.py new file mode 100644 index 000000000..7de92b12d --- /dev/null +++ b/tests/unit/misc/test_objects.py @@ -0,0 +1,33 @@ +# vim: ft=python fileencoding=utf-8 sts=4 sw=4 et: + +# Copyright 2017 Florian Bruhin (The Compiler) +# +# This file is part of qutebrowser. +# +# qutebrowser is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# qutebrowser is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with qutebrowser. If not, see . + +import pytest + +from qutebrowser.misc import objects +from qutebrowser.utils import usertypes + + +@pytest.mark.parametrize('func', [ + lambda: objects.NoBackend() == usertypes.Backend.QtWebEngine, + lambda: objects.NoBackend() != usertypes.Backend.QtWebEngine, + lambda: objects.NoBackend() in [usertypes.Backend.QtWebEngine], +]) +def test_no_backend(func): + with pytest.raises(AssertionError, match='No backend set!'): + func()