From 256900b87a96485d7658ee26df8c96c16559eb0f Mon Sep 17 00:00:00 2001 From: Philipp Albrecht Date: Fri, 12 Nov 2021 16:19:22 +0100 Subject: Extract backend selection into functions In order to fix the issue of silently using QtWebEngine when e.g. --qute-bdd-backend=webkit is given, even though QtWebEngine is not available, I moved the selection logic into separate functions to clear things up a little. I tried to avoid the duplicate imports, in case the backend is auto-selected, but after a while of thinking I abandoned that idea in favor of moving forward with this. --- tests/conftest.py | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 840ae3752..e1787fc83 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -219,23 +219,39 @@ def pytest_addoption(parser): def pytest_configure(config): + backend = _select_backend(config) + config.webengine = backend == 'webengine' + + earlyinit.configure_pyqt() + + +def _select_backend(config): + backend_arg = config.getoption('--qute-bdd-backend') + backend_env = os.environ.get('QUTE_BDD_BACKEND') + + backend = backend_arg or backend_env or _auto_select_backend() + + # Fail early if selected backend is not available + if backend == 'webkit': + import PyQt5.QtWebKitWidgets + elif backend == 'webengine': + import PyQt5.QtWebEngineWidgets + else: + raise utils.Unreachable(backend) + + return backend + + +def _auto_select_backend(): try: # Try to use QtWebKit as the default backend import PyQt5.QtWebKitWidgets - config.backend = 'webkit' + return 'webkit' except ImportError: # Try to use QtWebEngine as a fallback and fail early # if that's also not available import PyQt5.QtWebEngineWidgets - config.backend = 'webengine' - - backend_arg = config.getoption('--qute-bdd-backend') - backend_env = os.environ.get('QUTE_BDD_BACKEND') - config.webengine = (backend_arg == 'webengine' or - backend_env == 'webengine' or - config.backend == 'webengine') - - earlyinit.configure_pyqt() + return 'webengine' def pytest_report_header(config): -- cgit v1.2.3-54-g00ecf