summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortoofar <toofar@spalge.com>2022-07-03 14:14:05 +1200
committertoofar <toofar@spalge.com>2022-07-30 15:50:58 +1200
commit557782d7fd419ebaefc8c2bebcae6e0f9c94ccee (patch)
tree2a2277e8cabfe11669aa5fe7e0948a87d794caa8
parent9620856e3647d61b30523f6522c42566b55c40d3 (diff)
downloadqutebrowser-557782d7fd419ebaefc8c2bebcae6e0f9c94ccee.tar.gz
qutebrowser-557782d7fd419ebaefc8c2bebcae6e0f9c94ccee.zip
Improve skipping tests based on backend with both available.
Webengine tests weren't getting skipped if webengine was importable but webkit was selected. This made it so you couldn't run cleanly with QUTE_TESTS_BACKEND=webkit in an environment with both webkit and webengine installed. Adds qtwebkit_skip and qtwebengine_skip markers, which duplicate names used in the BDD tests. Refactors various webengine tests that were failing in this setup to act consistently in both cases. 1. pytestmark = [pytest.mark.qtwebkit_skip] 2. QtWebEngineCore = testutils.qt_module_skip("webenginecore") (1) skips the module based on the selected backend. (2) skips it if the needed module isn't available. Possibly they could be folded into one. When you have both backends available the qt_module_skip method won't skip the test, and since I changed import from qt.py to be None instead of raising an ImportError pytest.importorskip also won't skip based off of imports (AttributeErrors end up getting raised, which are a bit to generic to skip based off). So for that case imports have additionally been moved down been below the skips. Generally using pytest.importorskip in case I have to rewrite imports agin, because in that case it'll move them back up to the top... Relates to: 1d01d5faf115 Adapt unittests for re-writing PyQt imports Where I moved some import skips down. Which works fine for first order imports like `from qutebrowser.qt import webengine`, which just import None, but for things like `from qutebrowser.browser import webenginesettings` that ends up raising AttributeError. So this moves them back down.
-rw-r--r--tests/conftest.py8
-rw-r--r--tests/unit/browser/webengine/test_webenginedownloads.py8
-rw-r--r--tests/unit/browser/webengine/test_webengineinterceptor.py10
-rw-r--r--tests/unit/browser/webengine/test_webenginesettings.py8
-rw-r--r--tests/unit/browser/webengine/test_webenginetab.py8
-rw-r--r--tests/unit/browser/webengine/test_webview.py10
6 files changed, 46 insertions, 6 deletions
diff --git a/tests/conftest.py b/tests/conftest.py
index 2680207f7..ce5a2ce5b 100644
--- a/tests/conftest.py
+++ b/tests/conftest.py
@@ -122,6 +122,14 @@ def _apply_platform_markers(config, item):
f"Only runs on Qt 6, not {machinery.PACKAGE}"),
('qt5_xfail', pytest.mark.xfail, machinery.IS_QT5, "Fails on Qt 5"),
('qt6_xfail', pytest.mark.skipif, machinery.IS_QT6, "Fails on Qt 6"),
+ ('qtwebkit_skip',
+ pytest.mark.skipif,
+ config.webengine is False,
+ "Tests not applicable with QtWebKit"),
+ ('qtwebengine_skip',
+ pytest.mark.skipif,
+ config.webengine is True,
+ "Tests not applicable with QtWebEngine"),
]
for searched_marker, new_marker_kind, condition, default_reason in markers:
diff --git a/tests/unit/browser/webengine/test_webenginedownloads.py b/tests/unit/browser/webengine/test_webenginedownloads.py
index 5da1fd2ea..6e4f76971 100644
--- a/tests/unit/browser/webengine/test_webenginedownloads.py
+++ b/tests/unit/browser/webengine/test_webenginedownloads.py
@@ -24,12 +24,18 @@ import pytest
from qutebrowser.qt import webenginecore
from qutebrowser.utils import urlutils, usertypes, utils
-from qutebrowser.browser.webengine import webenginedownloads
from helpers import testutils
+# skip conditions
+pytestmark = [pytest.mark.qtwebkit_skip]
testutils.qt_module_skip('webenginecore')
+# delayed imports
+webenginedownloads = pytest.importorskip(
+ 'qutebrowser.browser.webengine.webenginedownloads'
+)
+
@pytest.mark.parametrize('path, expected', [
('foo(1)', 'foo'),
diff --git a/tests/unit/browser/webengine/test_webengineinterceptor.py b/tests/unit/browser/webengine/test_webengineinterceptor.py
index 4f52e6a99..7cb113bce 100644
--- a/tests/unit/browser/webengine/test_webengineinterceptor.py
+++ b/tests/unit/browser/webengine/test_webengineinterceptor.py
@@ -20,14 +20,22 @@
"""Test interceptor.py for webengine."""
+import pytest
+
from qutebrowser.qt import webenginecore
-from qutebrowser.browser.webengine import interceptor
from qutebrowser.utils import qtutils
from helpers import testutils
+# skip conditions
+pytestmark = [pytest.mark.qtwebkit_skip]
testutils.qt_module_skip('webenginecore')
+# delayed imports
+interceptor = pytest.importorskip(
+ 'qutebrowser.browser.webengine.interceptor'
+)
+
def test_no_missing_resource_types():
request_interceptor = interceptor.RequestInterceptor()
diff --git a/tests/unit/browser/webengine/test_webenginesettings.py b/tests/unit/browser/webengine/test_webenginesettings.py
index d7bd0e616..ca0b797d3 100644
--- a/tests/unit/browser/webengine/test_webenginesettings.py
+++ b/tests/unit/browser/webengine/test_webenginesettings.py
@@ -21,14 +21,20 @@ import logging
import pytest
-from qutebrowser.browser.webengine import webenginesettings
from qutebrowser.utils import usertypes
from qutebrowser.config import configdata
from helpers import testutils
+# skip conditions
+pytestmark = [pytest.mark.qtwebkit_skip]
QtWebEngineCore = testutils.qt_module_skip('webenginecore')
+
+# delayed imports
QWebEngineSettings = QtWebEngineCore.QWebEngineSettings
+webenginesettings = pytest.importorskip(
+ 'qutebrowser.browser.webengine.webenginesettings'
+)
@pytest.fixture
diff --git a/tests/unit/browser/webengine/test_webenginetab.py b/tests/unit/browser/webengine/test_webenginetab.py
index ce108ba1c..17eadcc62 100644
--- a/tests/unit/browser/webengine/test_webenginetab.py
+++ b/tests/unit/browser/webengine/test_webenginetab.py
@@ -25,15 +25,21 @@ import textwrap
import pytest
from qutebrowser.browser import greasemonkey
-from qutebrowser.browser.webengine import webenginetab
from qutebrowser.utils import usertypes
from helpers import testutils
+# skip conditions
+pytestmark = [pytest.mark.qtwebkit_skip]
QtWebEngineCore = testutils.qt_module_skip("webenginecore")
+
+# delayed imports
QWebEnginePage = QtWebEngineCore.QWebEnginePage
QWebEngineScriptCollection = QtWebEngineCore.QWebEngineScriptCollection
QWebEngineScript = QtWebEngineCore.QWebEngineScript
+webenginetab = pytest.importorskip(
+ 'qutebrowser.browser.webengine.webenginetab'
+)
pytestmark = pytest.mark.usefixtures('greasemonkey_manager')
diff --git a/tests/unit/browser/webengine/test_webview.py b/tests/unit/browser/webengine/test_webview.py
index 6cc908301..d6dd411c9 100644
--- a/tests/unit/browser/webengine/test_webview.py
+++ b/tests/unit/browser/webengine/test_webview.py
@@ -21,13 +21,19 @@ import re
import dataclasses
import pytest
-webview = pytest.importorskip('qutebrowser.browser.webengine.webview')
from qutebrowser.qt import webenginecore
-
from helpers import testutils
+# skip conditions
+pytestmark = [pytest.mark.qtwebkit_skip]
+QtWebEngineCore = testutils.qt_module_skip("webenginecore")
+
+# delayed imports
+webview = pytest.importorskip('qutebrowser.browser.webengine.webview')
+
+
@dataclasses.dataclass
class Naming: