diff options
author | Florian Bruhin <me@the-compiler.org> | 2024-03-25 23:19:37 +0100 |
---|---|---|
committer | Florian Bruhin <me@the-compiler.org> | 2024-03-25 23:29:24 +0100 |
commit | 1ee138b681a590ee500954361eed2cf923b1d8a0 (patch) | |
tree | 7b97381264a12c111f901f6ef00c23dcd67d2d1b | |
parent | a45cfb89cb49f906cc72032c7a737b0b255c3bcb (diff) | |
download | qutebrowser-qt67.tar.gz qutebrowser-qt67.zip |
qtutils: Handle QDataStream.Status.SizeLimitExceededqt67
-rw-r--r-- | qutebrowser/utils/qtutils.py | 9 | ||||
-rw-r--r-- | tests/unit/utils/test_qtutils.py | 35 |
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', [ |