summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2022-06-20 15:40:20 +1200
committertoofar <toofar@spalge.com>2022-07-03 16:51:04 +1200
commitf0ef68968cb0412e19337e7d167aa4398637e211 (patch)
treea42a9e34409925e3f9ee02e3471efae1ee86ea39
parent68b69d8bac2e49a4df7cd974b35f6e47826ebd2a (diff)
downloadqutebrowser-f0ef68968cb0412e19337e7d167aa4398637e211.tar.gz
qutebrowser-f0ef68968cb0412e19337e7d167aa4398637e211.zip
Adapt unittests for re-writing PyQt imports
Firstly switch importorskip out for our own version that'll check if a module is None in qutebrowser.qt. Then a bunch of misc changes to get tests working: * change some ImportError checks in tests to look for None * some places that did importorskip when import qutebrowser modules, and then used the response, have been changed to first check the Qt module and then import the qutebrowser module. This is because some qutebrowser modules might throw AttributeErrors now that some Qt modules they depend on are None (probably type hints? I forget). * change a few stubs.ImportFake()s for the same reason * in test_ipc.py save the original enums to the mocked qlocal socket, for equality checks in the code, otherwise they were being returned as specced magick mocks Swapping out importorskip was done like: git grep -l pytest.importorskip tests/ | xargs sed -i -e 's/pytest.importorskip/testutils.qt_module_skip/' git grep -l "qt_module_skip('qutebrowser.qt" tests/ | xargs sed -i -e "s/qt_module_skip('qutebrowser.qt./qt_module_skip('/" git grep -l 'qt_module_skip("qutebrowser.qt' tests/ | xargs sed -i -e 's/qt_module_skip("qutebrowser.qt./qt_module_skip("/ Then manually changing a few back that weren't Qt related.
-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):