summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--qutebrowser/config/configfiles.py11
-rw-r--r--qutebrowser/config/qtargs.py7
-rw-r--r--tests/conftest.py1
-rw-r--r--tests/end2end/test_invocations.py5
-rw-r--r--tests/helpers/fixtures.py15
-rw-r--r--tests/helpers/testutils.py14
-rw-r--r--tests/unit/browser/test_history.py11
-rw-r--r--tests/unit/browser/test_notification.py5
-rw-r--r--tests/unit/browser/webengine/test_webengine_cookies.py7
-rw-r--r--tests/unit/browser/webengine/test_webenginedownloads.py7
-rw-r--r--tests/unit/browser/webengine/test_webengineinterceptor.py8
-rw-r--r--tests/unit/browser/webengine/test_webenginesettings.py8
-rw-r--r--tests/unit/browser/webengine/test_webenginetab.py13
-rw-r--r--tests/unit/browser/webkit/test_mhtml.py3
-rw-r--r--tests/unit/browser/webkit/test_tabhistory.py3
-rw-r--r--tests/unit/browser/webkit/test_webkit_view.py8
-rw-r--r--tests/unit/browser/webkit/test_webkitelem.py7
-rw-r--r--tests/unit/browser/webkit/test_webkitsettings.py8
-rw-r--r--tests/unit/completion/test_models.py3
-rw-r--r--tests/unit/components/test_braveadblock.py2
-rw-r--r--tests/unit/config/test_configfiles.py3
-rw-r--r--tests/unit/config/test_qtargs.py5
-rw-r--r--tests/unit/config/test_qtargs_locale_workaround.py3
-rw-r--r--tests/unit/config/test_websettings.py5
-rw-r--r--tests/unit/javascript/position_caret/test_position_caret.py7
-rw-r--r--tests/unit/javascript/stylesheet/test_stylesheet_js.py8
-rw-r--r--tests/unit/misc/test_elf.py3
-rw-r--r--tests/unit/misc/test_ipc.py6
-rw-r--r--tests/unit/misc/test_sessions.py3
-rw-r--r--tests/unit/utils/test_debug.py3
-rw-r--r--tests/unit/utils/test_log.py2
-rw-r--r--tests/unit/utils/test_qtutils.py1
-rw-r--r--tests/unit/utils/test_standarddir.py4
-rw-r--r--tests/unit/utils/test_version.py26
34 files changed, 136 insertions, 89 deletions
diff --git a/qutebrowser/config/configfiles.py b/qutebrowser/config/configfiles.py
index b82d74e74..da0c83b59 100644
--- a/qutebrowser/config/configfiles.py
+++ b/qutebrowser/config/configfiles.py
@@ -39,7 +39,7 @@ from qutebrowser.config import (configexc, config, configdata, configutils,
configtypes)
from qutebrowser.keyinput import keyutils
from qutebrowser.utils import standarddir, utils, qtutils, log, urlmatch, version
-from qutebrowser.qt import core
+from qutebrowser.qt import core, webenginewidgets
if TYPE_CHECKING:
from qutebrowser.misc import savemanager
@@ -120,12 +120,9 @@ class StateConfig(configparser.ConfigParser):
Note that it's too early to use objects.backend here...
"""
- try:
- # pylint: disable=unused-import,redefined-outer-name
- import qutebrowser.qt.webenginewidgets
- except ImportError:
- return False
- return True
+ if webenginewidgets:
+ return True
+ return False
def _qtwe_versions(self) -> Optional[version.WebEngineVersions]:
"""Get the QtWebEngine versions."""
diff --git a/qutebrowser/config/qtargs.py b/qutebrowser/config/qtargs.py
index 0935c0b11..cbe58706d 100644
--- a/qutebrowser/config/qtargs.py
+++ b/qutebrowser/config/qtargs.py
@@ -25,7 +25,7 @@ import argparse
import pathlib
from typing import Any, Dict, Iterator, List, Optional, Sequence, Tuple
-from qutebrowser.qt import core
+from qutebrowser.qt import core, webenginecore
from qutebrowser.config import config
from qutebrowser.misc import objects
@@ -61,10 +61,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 webenginecore:
# 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/tests/conftest.py b/tests/conftest.py
index 6fe9d8243..2680207f7 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -271,7 +271,6 @@ def _select_backend(config):
def _auto_select_backend():
- # pylint: disable=unused-import
# Try to use QtWebKit as the default backend
from qutebrowser.qt import webkit
if webkit:
diff --git a/tests/end2end/test_invocations.py b/tests/end2end/test_invocations.py
index 072be4293..f53ed3129 100644
--- a/tests/end2end/test_invocations.py
+++ b/tests/end2end/test_invocations.py
@@ -23,7 +23,6 @@ import configparser
import subprocess
import sys
import logging
-import importlib
import re
import json
import platform
@@ -807,11 +806,11 @@ def test_unavailable_backend(request, quteproc_new):
qtwk_module = "qutebrowser.qt.webkitwidgets"
# Note we want to try the *opposite* backend here.
if request.config.webengine:
- pytest.importorskip(qtwe_module)
+ testutils.qt_module_skip(qtwe_module)
module = qtwk_module
backend = 'webkit'
else:
- pytest.importorskip(qtwk_module)
+ testutils.qt_module_skip(qtwk_module)
module = qtwe_module
backend = 'webengine'
diff --git a/tests/helpers/fixtures.py b/tests/helpers/fixtures.py
index 1daa8d741..1fd1be682 100644
--- a/tests/helpers/fixtures.py
+++ b/tests/helpers/fixtures.py
@@ -50,6 +50,7 @@ from qutebrowser.browser.webkit import cookies, cache
from qutebrowser.misc import savemanager, sql, objects, sessions
from qutebrowser.keyinput import modeman
from qutebrowser.qt import core, sip
+from helpers import testutils
_qute_scheme_handler = None
@@ -211,6 +212,7 @@ def web_tab_setup(qtbot, tab_registry, session_manager_stub,
@pytest.fixture
def webkit_tab(web_tab_setup, qtbot, cookiejar_and_cache, mode_manager,
widget_container, download_stub, webpage, monkeypatch):
+ testutils.qt_module_skip('webkit')
webkittab = pytest.importorskip('qutebrowser.browser.webkit.webkittab')
monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebKit)
@@ -236,6 +238,7 @@ def webengine_tab(web_tab_setup, qtbot, redirect_webengine_data,
tabwidget.current_index = 0
tabwidget.index_of = 0
+ testutils.qt_module_skip('webenginecore')
webenginetab = pytest.importorskip(
'qutebrowser.browser.webengine.webenginetab')
@@ -263,10 +266,10 @@ def webengine_tab(web_tab_setup, qtbot, redirect_webengine_data,
def web_tab(request):
"""A WebKitTab/WebEngineTab."""
if request.param == 'webkit':
- pytest.importorskip('qutebrowser.browser.webkit.webkittab')
+ testutils.qt_module_skip('webkit')
return request.getfixturevalue('webkit_tab')
elif request.param == 'webengine':
- pytest.importorskip('qutebrowser.browser.webengine.webenginetab')
+ testutils.qt_module_skip('webenginecore')
return request.getfixturevalue('webengine_tab')
else:
raise utils.Unreachable
@@ -441,7 +444,7 @@ def qnam(qapp):
@pytest.fixture
def webengineview(qtbot, monkeypatch, web_tab_setup):
"""Get a QWebEngineView if QtWebEngine is available."""
- QtWebEngineWidgets = pytest.importorskip('qutebrowser.qt.webenginewidgets')
+ QtWebEngineWidgets = testutils.qt_module_skip('webenginewidgets')
monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebEngine)
view = QtWebEngineWidgets.QWebEngineView()
qtbot.add_widget(view)
@@ -451,7 +454,7 @@ def webengineview(qtbot, monkeypatch, web_tab_setup):
@pytest.fixture
def webpage(qnam, monkeypatch):
"""Get a new QWebPage object."""
- QtWebKitWidgets = pytest.importorskip('qutebrowser.qt.webkitwidgets')
+ QtWebKitWidgets = testutils.qt_module_skip('webkitwidgets')
monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebKit)
class WebPageStub(QtWebKitWidgets.QWebPage):
@@ -476,7 +479,7 @@ def webpage(qnam, monkeypatch):
@pytest.fixture
def webview(qtbot, webpage):
"""Get a new QWebView object."""
- QtWebKitWidgets = pytest.importorskip('qutebrowser.qt.webkitwidgets')
+ QtWebKitWidgets = testutils.qt_module_skip('webkitwidgets')
view = QtWebKitWidgets.QWebView()
qtbot.add_widget(view)
@@ -733,7 +736,7 @@ def webengine_versions(testdata_scheme):
Calling qtwebengine_versions() initializes QtWebEngine, so we depend on
testdata_scheme here, to make sure that happens before.
"""
- pytest.importorskip('qutebrowser.qt.webenginewidgets')
+ testutils.qt_module_skip('webenginewidgets')
return version.qtwebengine_versions()
diff --git a/tests/helpers/testutils.py b/tests/helpers/testutils.py
index d9e7d9a92..ee1b5455f 100644
--- a/tests/helpers/testutils.py
+++ b/tests/helpers/testutils.py
@@ -29,9 +29,11 @@ import contextlib
import pathlib
import importlib.util
import importlib.machinery
+from typing import Any, Optional
import pytest
+import qutebrowser.qt
from qutebrowser.qt import gui, webenginecore
from qutebrowser.utils import log, utils, version
@@ -304,3 +306,15 @@ def enum_members(base, enumtype):
for name, value in vars(base).items()
if isinstance(value, enumtype)
}
+
+
+def qt_module_skip(modname: str, reason: Optional[str] = None) -> Any:
+ """Wraps return a PyQt module if is exists, else pytest.skip()."""
+ assert '.' not in modname, "`modname`: should be an attribute of qutebrowser.qt"
+ result = getattr(qutebrowser.qt, modname, None)
+ if result is None:
+ pytest.skip(
+ reason or f"Couldn't import {modname} from qutebrowser.qt",
+ allow_module_level=True,
+ )
+ return result
diff --git a/tests/unit/browser/test_history.py b/tests/unit/browser/test_history.py
index 4865c778c..4e1dc59b4 100644
--- a/tests/unit/browser/test_history.py
+++ b/tests/unit/browser/test_history.py
@@ -28,6 +28,7 @@ from qutebrowser.browser import history
from qutebrowser.utils import urlutils, usertypes
from qutebrowser.api import cmdutils
from qutebrowser.misc import sql, objects
+from helpers import testutils
@pytest.fixture(autouse=True)
@@ -276,7 +277,7 @@ class TestHistoryInterface:
@pytest.fixture
def hist_interface(self, web_history):
# pylint: disable=invalid-name
- QtWebKit = pytest.importorskip('qutebrowser.qt.webkit')
+ QtWebKit = testutils.qt_module_skip('webkit')
from qutebrowser.browser.webkit import webkithistory
QWebHistoryInterface = QtWebKit.QWebHistoryInterface
# pylint: enable=invalid-name
@@ -303,16 +304,14 @@ class TestInit:
if history.web_history is not None:
history.web_history.setParent(None)
history.web_history = None
- try:
+ if webkit and webkit.QWebHistoryInterface:
webkit.QWebHistoryInterface.setDefaultInterface(None)
- except ImportError:
- pass
@pytest.mark.parametrize('backend', [usertypes.Backend.QtWebEngine,
usertypes.Backend.QtWebKit])
def test_init(self, backend, qapp, tmpdir, data_tmpdir, monkeypatch, cleanup_init):
if backend == usertypes.Backend.QtWebKit:
- pytest.importorskip('qutebrowser.qt.webkitwidgets')
+ testutils.qt_module_skip('webkitwidgets')
else:
assert backend == usertypes.Backend.QtWebEngine
@@ -325,7 +324,7 @@ class TestInit:
assert default_interface._history is history.web_history
else:
assert backend == usertypes.Backend.QtWebEngine
- if webkit.QWebHistoryInterface is None:
+ if not webkit or not webkit.QWebHistoryInterface:
default_interface = None
else:
default_interface = webkit.QWebHistoryInterface.defaultInterface()
diff --git a/tests/unit/browser/test_notification.py b/tests/unit/browser/test_notification.py
index f7c07b93d..f61aea24f 100644
--- a/tests/unit/browser/test_notification.py
+++ b/tests/unit/browser/test_notification.py
@@ -26,7 +26,6 @@ from typing import List, Dict, Any, Optional, TYPE_CHECKING
import pytest
from qutebrowser.qt import gui
-pytest.importorskip("qutebrowser.qt.webenginecore")
if TYPE_CHECKING:
from qutebrowser.qt import QWebEngineNotification
@@ -34,6 +33,10 @@ from qutebrowser.config import configdata
from qutebrowser.misc import objects
from qutebrowser.browser.webengine import notification
from qutebrowser.qt import dbus, core
+from helpers import testutils
+
+
+testutils.qt_module_skip("webenginecore")
class FakeDBusMessage:
diff --git a/tests/unit/browser/webengine/test_webengine_cookies.py b/tests/unit/browser/webengine/test_webengine_cookies.py
index 7aa3e5b8d..4c627ed24 100644
--- a/tests/unit/browser/webengine/test_webengine_cookies.py
+++ b/tests/unit/browser/webengine/test_webengine_cookies.py
@@ -18,11 +18,14 @@
# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>.
import pytest
-from qutebrowser.qt import webenginecore, core
-pytest.importorskip('qutebrowser.qt.webenginecore')
+from qutebrowser.qt import webenginecore, core
from qutebrowser.browser.webengine import cookies
from qutebrowser.utils import urlmatch
+from helpers import testutils
+
+
+testutils.qt_module_skip('webenginecore')
@pytest.fixture
diff --git a/tests/unit/browser/webengine/test_webenginedownloads.py b/tests/unit/browser/webengine/test_webenginedownloads.py
index 066637ee8..5da1fd2ea 100644
--- a/tests/unit/browser/webengine/test_webenginedownloads.py
+++ b/tests/unit/browser/webengine/test_webenginedownloads.py
@@ -21,11 +21,14 @@ import base64
import dataclasses
import pytest
-pytest.importorskip('qutebrowser.qt.webenginecore')
-from qutebrowser.qt import webenginecore
+from qutebrowser.qt import webenginecore
from qutebrowser.utils import urlutils, usertypes, utils
from qutebrowser.browser.webengine import webenginedownloads
+from helpers import testutils
+
+
+testutils.qt_module_skip('webenginecore')
@pytest.mark.parametrize('path, expected', [
diff --git a/tests/unit/browser/webengine/test_webengineinterceptor.py b/tests/unit/browser/webengine/test_webengineinterceptor.py
index 9a2963e9c..4f52e6a99 100644
--- a/tests/unit/browser/webengine/test_webengineinterceptor.py
+++ b/tests/unit/browser/webengine/test_webengineinterceptor.py
@@ -20,17 +20,15 @@
"""Test interceptor.py for webengine."""
-import pytest
-
-pytest.importorskip('qutebrowser.qt.webenginecore')
-
from qutebrowser.qt import webenginecore
-
from qutebrowser.browser.webengine import interceptor
from qutebrowser.utils import qtutils
from helpers import testutils
+testutils.qt_module_skip('webenginecore')
+
+
def test_no_missing_resource_types():
request_interceptor = interceptor.RequestInterceptor()
qb_keys = set(request_interceptor._resource_types.keys())
diff --git a/tests/unit/browser/webengine/test_webenginesettings.py b/tests/unit/browser/webengine/test_webenginesettings.py
index 838ddd1b2..d7bd0e616 100644
--- a/tests/unit/browser/webengine/test_webenginesettings.py
+++ b/tests/unit/browser/webengine/test_webenginesettings.py
@@ -21,12 +21,14 @@ import logging
import pytest
-QtWebEngineCore = pytest.importorskip('qutebrowser.qt.webenginecore')
-QWebEngineSettings = QtWebEngineCore.QWebEngineSettings
-
from qutebrowser.browser.webengine import webenginesettings
from qutebrowser.utils import usertypes
from qutebrowser.config import configdata
+from helpers import testutils
+
+
+QtWebEngineCore = testutils.qt_module_skip('webenginecore')
+QWebEngineSettings = QtWebEngineCore.QWebEngineSettings
@pytest.fixture
diff --git a/tests/unit/browser/webengine/test_webenginetab.py b/tests/unit/browser/webengine/test_webenginetab.py
index c5c611065..ce108ba1c 100644
--- a/tests/unit/browser/webengine/test_webenginetab.py
+++ b/tests/unit/browser/webengine/test_webenginetab.py
@@ -23,15 +23,18 @@ import logging
import textwrap
import pytest
-QtWebEngineCore = pytest.importorskip("qutebrowser.qt.webenginecore")
+
+from qutebrowser.browser import greasemonkey
+from qutebrowser.browser.webengine import webenginetab
+from qutebrowser.utils import usertypes
+from helpers import testutils
+
+
+QtWebEngineCore = testutils.qt_module_skip("webenginecore")
QWebEnginePage = QtWebEngineCore.QWebEnginePage
QWebEngineScriptCollection = QtWebEngineCore.QWebEngineScriptCollection
QWebEngineScript = QtWebEngineCore.QWebEngineScript
-from qutebrowser.browser import greasemonkey
-from qutebrowser.utils import usertypes
-webenginetab = pytest.importorskip(
- "qutebrowser.browser.webengine.webenginetab")
pytestmark = pytest.mark.usefixtures('greasemonkey_manager')
diff --git a/tests/unit/browser/webkit/test_mhtml.py b/tests/unit/browser/webkit/test_mhtml.py
index dabffeb78..e468d5788 100644
--- a/tests/unit/browser/webkit/test_mhtml.py
+++ b/tests/unit/browser/webkit/test_mhtml.py
@@ -25,6 +25,9 @@ import uuid
import pytest
+from helpers import testutils
+
+testutils.qt_module_skip('webkit')
mhtml = pytest.importorskip('qutebrowser.browser.webkit.mhtml')
diff --git a/tests/unit/browser/webkit/test_tabhistory.py b/tests/unit/browser/webkit/test_tabhistory.py
index 43788d0a2..195361014 100644
--- a/tests/unit/browser/webkit/test_tabhistory.py
+++ b/tests/unit/browser/webkit/test_tabhistory.py
@@ -26,15 +26,16 @@ import dataclasses
from typing import Any
import pytest
-pytest.importorskip('qutebrowser.qt.webkit')
from qutebrowser.qt import webkit
from qutebrowser.browser.webkit import tabhistory
from qutebrowser.misc.sessions import TabHistoryItem as Item
from qutebrowser.utils import qtutils
from qutebrowser.qt import core
+from helpers import testutils
+testutils.qt_module_skip('webkit')
pytestmark = pytest.mark.qt_log_ignore('QIODevice::read.*: device not open')
diff --git a/tests/unit/browser/webkit/test_webkit_view.py b/tests/unit/browser/webkit/test_webkit_view.py
index fcaaa2256..7c9249400 100644
--- a/tests/unit/browser/webkit/test_webkit_view.py
+++ b/tests/unit/browser/webkit/test_webkit_view.py
@@ -18,7 +18,13 @@
# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>.
import pytest
-webview = pytest.importorskip('qutebrowser.browser.webkit.webview')
+
+from helpers import testutils
+
+
+webkit = testutils.qt_module_skip('webkit')
+if webkit:
+ from qutebrowser.browser.webkit import webview
@pytest.fixture
diff --git a/tests/unit/browser/webkit/test_webkitelem.py b/tests/unit/browser/webkit/test_webkitelem.py
index 85947f03f..042883645 100644
--- a/tests/unit/browser/webkit/test_webkitelem.py
+++ b/tests/unit/browser/webkit/test_webkitelem.py
@@ -27,17 +27,20 @@ import itertools
import dataclasses
import pytest
-QWebElement = pytest.importorskip('qutebrowser.qt.webkit').QWebElement
from qutebrowser.browser import browsertab
-from qutebrowser.browser.webkit import webkitelem
from qutebrowser.misc import objects
from qutebrowser.utils import usertypes
from qutebrowser.qt import core
+from helpers import testutils
if TYPE_CHECKING:
from helpers import stubs
+QWebElement = testutils.qt_module_skip('webkit').QWebElement
+if QWebElement:
+ from qutebrowser.browser.webkit import webkitelem
+
def get_webelem(geometry=None, frame=None, *, null=False, style=None,
attributes=None, tagname=None, classes=None,
diff --git a/tests/unit/browser/webkit/test_webkitsettings.py b/tests/unit/browser/webkit/test_webkitsettings.py
index 5fb6567d7..4f04ff117 100644
--- a/tests/unit/browser/webkit/test_webkitsettings.py
+++ b/tests/unit/browser/webkit/test_webkitsettings.py
@@ -17,10 +17,12 @@
# You should have received a copy of the GNU General Public License
# along with qutebrowser. If not, see <https://www.gnu.org/licenses/>.
-import pytest
-pytest.importorskip('qutebrowser.qt.webkitwidgets')
-from qutebrowser.browser.webkit import webkitsettings
+from helpers import testutils
+
+
+if testutils.qt_module_skip('webkitwidgets'):
+ from qutebrowser.browser.webkit import webkitsettings
def test_parsed_user_agent(qapp):
diff --git a/tests/unit/completion/test_models.py b/tests/unit/completion/test_models.py
index 572dfc91e..ad3fc31f9 100644
--- a/tests/unit/completion/test_models.py
+++ b/tests/unit/completion/test_models.py
@@ -40,6 +40,7 @@ from qutebrowser.config import configdata, configtypes
from qutebrowser.utils import usertypes
from qutebrowser.mainwindow import tabbedbrowser
from qutebrowser.qt import webenginecore, core
+from helpers import testutils
def _check_completions(model, expected):
@@ -1342,7 +1343,7 @@ def test_url_completion_benchmark(benchmark, info,
@pytest.fixture
def tab_with_history(fake_web_tab, tabbed_browser_stubs, info, monkeypatch):
"""Returns a fake tab with some fake history items."""
- pytest.importorskip('qutebrowser.qt.webenginewidgets')
+ testutils.qt_module_skip('webenginewidgets')
tab = fake_web_tab(core.QUrl('https://github.com'), 'GitHub', 0)
current_idx = 2
monkeypatch.setattr(
diff --git a/tests/unit/components/test_braveadblock.py b/tests/unit/components/test_braveadblock.py
index cafb2a7d7..65cdb1681 100644
--- a/tests/unit/components/test_braveadblock.py
+++ b/tests/unit/components/test_braveadblock.py
@@ -169,7 +169,7 @@ def easylist_easyprivacy(easylist_easyprivacy_both):
@pytest.fixture
def ad_blocker(config_stub, data_tmpdir):
- pytest.importorskip("adblock")
+ testutils.qt_module_skip("adblock")
return braveadblock.BraveAdBlocker(data_dir=pathlib.Path(str(data_tmpdir)))
diff --git a/tests/unit/config/test_configfiles.py b/tests/unit/config/test_configfiles.py
index c744eaa8f..a8071ea25 100644
--- a/tests/unit/config/test_configfiles.py
+++ b/tests/unit/config/test_configfiles.py
@@ -247,8 +247,7 @@ def test_qtwe_version_changed(state_writer, qtwe_version_patcher,
@pytest.mark.parametrize("value", ["no", None])
def test_version_changed_webkit(stubs, monkeypatch, state_writer,
key, value, attribute, expected):
- fake = stubs.ImportFake({'qutebrowser.qt.webenginewidgets': False}, monkeypatch)
- fake.patch()
+ monkeypatch.setattr(configfiles, 'webenginewidgets', None)
if value is not None:
state_writer(key, value)
diff --git a/tests/unit/config/test_qtargs.py b/tests/unit/config/test_qtargs.py
index 22a23d437..5df191496 100644
--- a/tests/unit/config/test_qtargs.py
+++ b/tests/unit/config/test_qtargs.py
@@ -25,6 +25,7 @@ import pytest
from qutebrowser import qutebrowser
from qutebrowser.config import qtargs, configdata
from qutebrowser.utils import usertypes, version
+from helpers import testutils
@pytest.fixture
@@ -110,7 +111,7 @@ def test_no_webengine_available(monkeypatch, config_stub, parser, stubs):
here.
"""
monkeypatch.setattr(qtargs.objects, 'backend', usertypes.Backend.QtWebEngine)
- monkeypatch.setattr(qtargs, 'webengine', None)
+ monkeypatch.setattr(qtargs, 'webenginecore', None)
parsed = parser.parse_args([])
args = qtargs.qt_args(parsed)
@@ -123,7 +124,7 @@ class TestWebEngineArgs:
@pytest.fixture(autouse=True)
def ensure_webengine(self, monkeypatch):
"""Skip all tests if QtWebEngine is unavailable."""
- pytest.importorskip("qutebrowser.qt.webenginecore")
+ testutils.qt_module_skip("webenginecore")
monkeypatch.setattr(qtargs.objects, 'backend', usertypes.Backend.QtWebEngine)
@pytest.mark.parametrize("setting, values", qtargs._WEBENGINE_SETTINGS.items())
diff --git a/tests/unit/config/test_qtargs_locale_workaround.py b/tests/unit/config/test_qtargs_locale_workaround.py
index b6833c42a..fad3882e0 100644
--- a/tests/unit/config/test_qtargs_locale_workaround.py
+++ b/tests/unit/config/test_qtargs_locale_workaround.py
@@ -24,9 +24,10 @@ from qutebrowser.qt import core
from qutebrowser.utils import utils
from qutebrowser.config import qtargs
+from helpers import testutils
-pytest.importorskip('qutebrowser.qt.webenginewidgets')
+testutils.qt_module_skip('webenginewidgets')
@pytest.fixture(autouse=True)
diff --git a/tests/unit/config/test_websettings.py b/tests/unit/config/test_websettings.py
index f42563727..87d7b32e1 100644
--- a/tests/unit/config/test_websettings.py
+++ b/tests/unit/config/test_websettings.py
@@ -22,6 +22,7 @@ import pytest
from qutebrowser.config import websettings
from qutebrowser.misc import objects
from qutebrowser.utils import usertypes
+from helpers import testutils
@pytest.mark.parametrize([ # noqa: PT006
@@ -80,8 +81,8 @@ def test_parse_user_agent(user_agent, os_info, webkit_version,
def test_user_agent(monkeypatch, config_stub, qapp):
- webenginesettings = pytest.importorskip(
- "qutebrowser.browser.webengine.webenginesettings")
+ webenginesettings = testutils.qt_module_skip(
+ "webenginesettings")
monkeypatch.setattr(objects, 'backend', usertypes.Backend.QtWebEngine)
webenginesettings.init_user_agent()
diff --git a/tests/unit/javascript/position_caret/test_position_caret.py b/tests/unit/javascript/position_caret/test_position_caret.py
index 1c399392f..0b3e6152d 100644
--- a/tests/unit/javascript/position_caret/test_position_caret.py
+++ b/tests/unit/javascript/position_caret/test_position_caret.py
@@ -21,8 +21,11 @@
import pytest
-QWebSettings = pytest.importorskip("qutebrowser.qt.webkit").QWebSettings
-QWebPage = pytest.importorskip("qutebrowser.qt.webkitwidgets").QWebPage
+from helpers import testutils
+
+
+QWebSettings = testutils.qt_module_skip("webkit").QWebSettings
+QWebPage = testutils.qt_module_skip("webkitwidgets").QWebPage
@pytest.fixture(autouse=True)
diff --git a/tests/unit/javascript/stylesheet/test_stylesheet_js.py b/tests/unit/javascript/stylesheet/test_stylesheet_js.py
index fd0189919..9698f644e 100644
--- a/tests/unit/javascript/stylesheet/test_stylesheet_js.py
+++ b/tests/unit/javascript/stylesheet/test_stylesheet_js.py
@@ -22,10 +22,12 @@
import pathlib
import pytest
-QtWebEngineCore = pytest.importorskip("qutebrowser.qt.webenginecore")
-QWebEngineProfile = QtWebEngineCore.QWebEngineProfile
-
from qutebrowser.utils import javascript
+from helpers import testutils
+
+
+QtWebEngineCore = testutils.qt_module_skip("webenginecore")
+QWebEngineProfile = QtWebEngineCore.QWebEngineProfile
DEFAULT_BODY_BG = "rgba(0, 0, 0, 0)"
diff --git a/tests/unit/misc/test_elf.py b/tests/unit/misc/test_elf.py
index 2c082440f..887cb53cc 100644
--- a/tests/unit/misc/test_elf.py
+++ b/tests/unit/misc/test_elf.py
@@ -26,6 +26,7 @@ from hypothesis import strategies as hst
from qutebrowser.misc import elf
from qutebrowser.utils import utils
+from helpers import testutils
@pytest.mark.parametrize('fmt, expected', [
@@ -57,7 +58,7 @@ def test_result(qapp, caplog):
If that happens, please report a bug about it!
"""
- pytest.importorskip('qutebrowser.qt.webenginecore')
+ testutils.qt_module_skip('webenginecore')
versions = elf.parse_webenginecore()
assert versions is not None
diff --git a/tests/unit/misc/test_ipc.py b/tests/unit/misc/test_ipc.py
index 9e789bb57..fa3d6599b 100644
--- a/tests/unit/misc/test_ipc.py
+++ b/tests/unit/misc/test_ipc.py
@@ -662,10 +662,12 @@ class TestSendOrListen:
@pytest.fixture
def qlocalsocket_mock(self, mocker):
+ orig_errors = network.QLocalSocket.LocalSocketError
+ orig_states = network.QLocalSocket.LocalSocketState
m = mocker.patch('qutebrowser.misc.ipc.network.QLocalSocket', autospec=True)
m().errorString.return_value = "Error string"
- m.LocalSocketError = network.QLocalSocket.LocalSocketError
- m.LocalSocketState = network.QLocalSocket.LocalSocketState
+ m.LocalSocketError = orig_errors
+ m.LocalSocketState = orig_states
return m
@pytest.mark.linux(reason="Flaky on Windows and macOS")
diff --git a/tests/unit/misc/test_sessions.py b/tests/unit/misc/test_sessions.py
index a3304d565..c62cd0655 100644
--- a/tests/unit/misc/test_sessions.py
+++ b/tests/unit/misc/test_sessions.py
@@ -23,15 +23,16 @@ import logging
import pytest
import yaml
-QWebView = pytest.importorskip('qutebrowser.qt.webkitwidgets').QWebView
from qutebrowser.misc import sessions
from qutebrowser.misc.sessions import TabHistoryItem as Item
from qutebrowser.utils import objreg, qtutils
from qutebrowser.browser.webkit import tabhistory
from qutebrowser.qt import core
+from helpers import testutils
+QWebView = testutils.qt_module_skip('webkitwidgets').QWebView
pytestmark = pytest.mark.qt_log_ignore('QIODevice::read.*: device not open')
webengine_refactoring_xfail = pytest.mark.xfail(
diff --git a/tests/unit/utils/test_debug.py b/tests/unit/utils/test_debug.py
index e81fbd15d..bd0c236d4 100644
--- a/tests/unit/utils/test_debug.py
+++ b/tests/unit/utils/test_debug.py
@@ -29,6 +29,7 @@ import pytest
from qutebrowser.utils import debug, qtutils
from qutebrowser.misc import objects
from qutebrowser.qt import widgets, core
+from helpers import testutils
@debug.log_events
@@ -189,7 +190,7 @@ class TestQFlagsKey:
No idea what's happening here exactly...
"""
- qwebpage = pytest.importorskip("qutebrowser.qt.webkitwidgets").QWebPage
+ qwebpage = testutils.qt_module_skip("webkitwidgets").QWebPage
flags = qwebpage.FindWrapsAroundDocument
flags |= qwebpage.FindBackward
diff --git a/tests/unit/utils/test_log.py b/tests/unit/utils/test_log.py
index f00c5cee3..259d9a04b 100644
--- a/tests/unit/utils/test_log.py
+++ b/tests/unit/utils/test_log.py
@@ -243,7 +243,7 @@ class TestInitLog:
@pytest.fixture(autouse=True)
def setup(self, mocker):
- mocker.patch('qutebrowser.utils.log.qtcore.qInstallMessageHandler',
+ mocker.patch('qutebrowser.utils.log.core.qInstallMessageHandler',
autospec=True)
yield
# Make sure logging is in a sensible default state
diff --git a/tests/unit/utils/test_qtutils.py b/tests/unit/utils/test_qtutils.py
index d730ebd53..7af96f5dc 100644
--- a/tests/unit/utils/test_qtutils.py
+++ b/tests/unit/utils/test_qtutils.py
@@ -108,6 +108,7 @@ def test_version_check_compiled_and_exact():
('602.1', True) # new QtWebKit TP5, 5.212 Alpha
])
def test_is_new_qtwebkit(monkeypatch, version, is_new):
+ testutils.qt_module_skip('webkit')
monkeypatch.setattr(qtutils, 'qWebKitVersion', lambda: version)
assert qtutils.is_new_qtwebkit() == is_new
diff --git a/tests/unit/utils/test_standarddir.py b/tests/unit/utils/test_standarddir.py
index 7330d3fd8..e5cfd4b51 100644
--- a/tests/unit/utils/test_standarddir.py
+++ b/tests/unit/utils/test_standarddir.py
@@ -456,10 +456,10 @@ def test_no_qapplication(qapp, tmpdir, monkeypatch):
sys.path = sys.argv[1:] # make sure we have the same python path
- from qutebrowser.qt.widgets import QApplication
+ from qutebrowser.qt import widgets
from qutebrowser.utils import standarddir
- assert QApplication.instance() is None
+ assert widgets.QApplication.instance() is None
standarddir.APPNAME = 'qute_test'
standarddir._init_dirs()
diff --git a/tests/unit/utils/test_version.py b/tests/unit/utils/test_version.py
index 3f2e7d7ad..d48fe047a 100644
--- a/tests/unit/utils/test_version.py
+++ b/tests/unit/utils/test_version.py
@@ -40,10 +40,14 @@ from qutebrowser.config import config, websettings
from qutebrowser.utils import version, usertypes, utils, standarddir
from qutebrowser.misc import pastebin, objects, elf
from qutebrowser.browser import pdfjs
+from helpers import testutils
-try:
- from qutebrowser.browser.webengine import webenginesettings
-except ImportError:
+
+if webenginecore:
+ webenginesettings = pytest.importorskip(
+ 'qutebrowser.browser.webengine.webenginesettings'
+ )
+else:
webenginesettings = None
@@ -762,7 +766,7 @@ class TestModuleVersions:
name: The name of the module to check.
has_version: Whether a __version__ attribute is expected.
"""
- module = pytest.importorskip(name)
+ module = testutils.pytest.importorskip(name)
assert hasattr(module, '__version__') == has_version
def test_existing_sip_attribute(self):
@@ -1001,18 +1005,12 @@ class TestWebEngineVersions:
def test_real_chromium_version(self, qapp):
"""Compare the inferred Chromium version with the real one."""
+ testutils.qt_module_skip('webenginecore')
pyqt_webengine_version = version._get_pyqt_webengine_qt_version()
if pyqt_webengine_version is None:
if '.dev' in core.PYQT_VERSION_STR:
pytest.skip("dev version of PyQt")
- try:
- from qutebrowser.qt.webenginecore import (
- PYQT_WEBENGINE_VERSION_STR, PYQT_WEBENGINE_VERSION)
- except ImportError as e:
- # QtWebKit
- pytest.skip(str(e))
-
if 0x060000 > webenginecore.PYQT_WEBENGINE_VERSION >= 0x050F02:
# Starting with Qt 5.15.2, we can only do bad guessing anyways...
pytest.skip("Could be QtWebEngine 5.15.2 or 5.15.3")
@@ -1061,7 +1059,7 @@ class TestChromiumVersion:
@pytest.fixture(autouse=True)
def clear_parsed_ua(self, monkeypatch):
- pytest.importorskip('qutebrowser.qt.webenginewidgets')
+ testutils.qt_module_skip('webenginewidgets')
if webenginesettings is not None:
# Not available with QtWebKit
monkeypatch.setattr(webenginesettings, 'parsed_user_agent', None)
@@ -1257,7 +1255,7 @@ def test_version_info(params, stubs, monkeypatch, config_stub):
'earlyinit.qt_version': lambda: 'QT VERSION',
'_module_versions': lambda: ['MODULE VERSION 1', 'MODULE VERSION 2'],
'_pdfjs_version': lambda: 'PDFJS VERSION',
- 'QtNetwork.QSslSocket': FakeQSslSocket('SSL VERSION', params.ssl_support),
+ 'network.QSslSocket': FakeQSslSocket('SSL VERSION', params.ssl_support),
'platform.platform': lambda: 'PLATFORM',
'platform.architecture': lambda: ('ARCHITECTURE', ''),
'_os_info': lambda: ['OS INFO 1', 'OS INFO 2'],
@@ -1372,7 +1370,7 @@ class TestOpenGLInfo:
def test_func(self, qapp):
"""Simply call version.opengl_info() and see if it doesn't crash."""
- pytest.importorskip("qutebrowser.qt.opengl")
+ testutils.qt_module_skip("opengl")
version.opengl_info()
def test_func_fake(self, qapp, monkeypatch):