summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Bruhin <me@the-compiler.org>2024-03-25 23:19:37 +0100
committerFlorian Bruhin <me@the-compiler.org>2024-03-25 23:29:24 +0100
commit1ee138b681a590ee500954361eed2cf923b1d8a0 (patch)
tree7b97381264a12c111f901f6ef00c23dcd67d2d1b
parenta45cfb89cb49f906cc72032c7a737b0b255c3bcb (diff)
downloadqutebrowser-qt67.tar.gz
qutebrowser-qt67.zip
qtutils: Handle QDataStream.Status.SizeLimitExceededqt67
-rw-r--r--qutebrowser/utils/qtutils.py9
-rw-r--r--tests/unit/utils/test_qtutils.py35
2 files changed, 40 insertions, 4 deletions
diff --git a/qutebrowser/utils/qtutils.py b/qutebrowser/utils/qtutils.py
index 12c98cc1d..21f3b8478 100644
--- a/qutebrowser/utils/qtutils.py
+++ b/qutebrowser/utils/qtutils.py
@@ -193,6 +193,15 @@ def check_qdatastream(stream: QDataStream) -> None:
QDataStream.Status.WriteFailed: ("The data stream cannot write to the "
"underlying device."),
}
+ try:
+ status_to_str[QDataStream.Status.SizeLimitExceeded] = ( # type: ignore[attr-defined]
+ "The data stream cannot read or write the data because its size is larger "
+ "than supported by the current platform."
+ )
+ except AttributeError:
+ # Added in Qt 6.7
+ pass
+
if stream.status() != QDataStream.Status.Ok:
raise OSError(status_to_str[stream.status()])
diff --git a/tests/unit/utils/test_qtutils.py b/tests/unit/utils/test_qtutils.py
index 3aceca668..c7af3162c 100644
--- a/tests/unit/utils/test_qtutils.py
+++ b/tests/unit/utils/test_qtutils.py
@@ -208,6 +208,18 @@ def test_ensure_valid(obj, raising, exc_reason, exc_str):
"The data stream has read corrupt data."),
(QDataStream.Status.WriteFailed, True,
"The data stream cannot write to the underlying device."),
+ pytest.param(
+ getattr(QDataStream.Status, "SizeLimitExceeded", None),
+ True,
+ (
+ "The data stream cannot read or write the data because its size is larger "
+ "than supported by the current platform."
+ ),
+ marks=pytest.mark.skipif(
+ not hasattr(QDataStream.Status, "SizeLimitExceeded"),
+ reason="Added in Qt 6.7"
+ )
+ ),
])
def test_check_qdatastream(status, raising, message):
"""Test check_qdatastream.
@@ -226,10 +238,25 @@ def test_check_qdatastream(status, raising, message):
qtutils.check_qdatastream(stream)
-def test_qdatastream_status_count():
- """Make sure no new members are added to QDataStream.Status."""
- status_vals = testutils.enum_members(QDataStream, QDataStream.Status)
- assert len(status_vals) == 4
+def test_qdatastream_status_members():
+ """Make sure no new members are added to QDataStream.Status.
+
+ If this fails, qtutils.check_qdatastream will need to be updated with the
+ respective error documentation.
+ """
+ status_vals = set(testutils.enum_members(QDataStream, QDataStream.Status).values())
+ expected = {
+ QDataStream.Status.Ok,
+ QDataStream.Status.ReadPastEnd,
+ QDataStream.Status.ReadCorruptData,
+ QDataStream.Status.WriteFailed,
+ }
+ try:
+ expected.add(QDataStream.Status.SizeLimitExceeded)
+ except AttributeError:
+ # Added in Qt 6.7
+ pass
+ assert status_vals == expected
@pytest.mark.parametrize('color, expected', [