summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2024-03-25 17:25:32 +0100
committerFlorian Bruhin <me@the-compiler.org>2024-03-25 23:05:16 +0100
commitad3ba9fe84166d0c8fe5de59be5f0fc27a251a35 (patch)
tree1ba74519c8cab91a7a6f0ddaad967bf81ee33259
parent01f4807eaf8d20dcc3802cd2febf9432568f3935 (diff)
downloadqutebrowser-ad3ba9fe84166d0c8fe5de59be5f0fc27a251a35.tar.gz
qutebrowser-ad3ba9fe84166d0c8fe5de59be5f0fc27a251a35.zip
tests: Avoid accessing Qt statics at import time
With a Qt 6.7 developer build, the tests fail with: ASSERT failure in QtGlobalStatic::ApplicationHolder<QAS>::PlainType* QtGlobalStatic::ApplicationHolder<QAS>::pointer() [with QAS = {anonymous}::Q_QAS_qtlsbLoader; PlainType = QFactoryLoader]: "The application static was used without a QCoreApplication instance", file .../qtbase/src/corelib/kernel/qapplicationstatic.h, line 54 Fatal Python error: Aborted [...] Current thread 0x00007c18bb3f3740 (most recent call first): File ".../tests/unit/browser/webkit/test_certificateerror.py", line 23 in <module> See https://codereview.qt-project.org/c/qt/qtbase/+/495239
-rw-r--r--tests/unit/browser/webkit/test_certificateerror.py17
-rw-r--r--tests/unit/config/test_configtypes.py20
2 files changed, 19 insertions, 18 deletions
diff --git a/tests/unit/browser/webkit/test_certificateerror.py b/tests/unit/browser/webkit/test_certificateerror.py
index 2feb7dcf1..7f5cce9c6 100644
--- a/tests/unit/browser/webkit/test_certificateerror.py
+++ b/tests/unit/browser/webkit/test_certificateerror.py
@@ -18,15 +18,15 @@ class FakeError:
return self.msg
-@pytest.mark.parametrize('errors, expected', [
+@pytest.mark.parametrize('error_factories, expected', [
(
- [QSslError(QSslError.SslError.UnableToGetIssuerCertificate)],
+ [lambda: QSslError(QSslError.SslError.UnableToGetIssuerCertificate)],
['<p>The issuer certificate could not be found</p>'],
),
(
[
- QSslError(QSslError.SslError.UnableToGetIssuerCertificate),
- QSslError(QSslError.SslError.UnableToDecryptCertificateSignature),
+ lambda: QSslError(QSslError.SslError.UnableToGetIssuerCertificate),
+ lambda: QSslError(QSslError.SslError.UnableToDecryptCertificateSignature),
],
[
'<ul>',
@@ -37,13 +37,13 @@ class FakeError:
),
(
- [FakeError('Escaping test: <>')],
+ [lambda: FakeError('Escaping test: <>')],
['<p>Escaping test: &lt;&gt;</p>'],
),
(
[
- FakeError('Escaping test 1: <>'),
- FakeError('Escaping test 2: <>'),
+ lambda: FakeError('Escaping test 1: <>'),
+ lambda: FakeError('Escaping test 2: <>'),
],
[
'<ul>',
@@ -53,8 +53,9 @@ class FakeError:
],
),
])
-def test_html(stubs, errors, expected):
+def test_html(stubs, error_factories, expected):
reply = stubs.FakeNetworkReply(url=QUrl("https://example.com"))
+ errors = [factory() for factory in error_factories]
wrapper = certificateerror.CertificateErrorWrapper(reply=reply, errors=errors)
lines = [line.strip() for line in wrapper.html().splitlines() if line.strip()]
assert lines == expected
diff --git a/tests/unit/config/test_configtypes.py b/tests/unit/config/test_configtypes.py
index d908e3ac6..bcd257ed7 100644
--- a/tests/unit/config/test_configtypes.py
+++ b/tests/unit/config/test_configtypes.py
@@ -1874,24 +1874,24 @@ class TestProxy:
def klass(self):
return configtypes.Proxy
- @pytest.mark.parametrize('val, expected', [
- ('system', configtypes.SYSTEM_PROXY),
- ('none', QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)),
+ @pytest.mark.parametrize('val, expected_factory', [
+ ('system', lambda: configtypes.SYSTEM_PROXY),
+ ('none', lambda: QNetworkProxy(QNetworkProxy.ProxyType.NoProxy)),
('socks://example.com/',
- QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com')),
+ lambda: QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com')),
('socks5://foo:bar@example.com:2323',
- QNetworkProxy(QNetworkProxy.ProxyType.Socks5Proxy, 'example.com', 2323,
- 'foo', 'bar')),
+ lambda: QNetworkProxy(
+ QNetworkProxy.ProxyType.Socks5Proxy, 'example.com', 2323, 'foo', 'bar')),
('pac+http://example.com/proxy.pac',
- pac.PACFetcher(QUrl('pac+http://example.com/proxy.pac'))),
+ lambda: pac.PACFetcher(QUrl('pac+http://example.com/proxy.pac'))),
('pac+file:///tmp/proxy.pac',
- pac.PACFetcher(QUrl('pac+file:///tmp/proxy.pac'))),
+ lambda: pac.PACFetcher(QUrl('pac+file:///tmp/proxy.pac'))),
])
- def test_to_py_valid(self, klass, val, expected):
+ def test_to_py_valid(self, klass, val, expected_factory):
actual = klass().to_py(val)
if isinstance(actual, QNetworkProxy):
actual = QNetworkProxy(actual)
- assert actual == expected
+ assert actual == expected_factory()
@pytest.mark.parametrize('val', [
'blah',