qtutils: Handle QDataStream.Status.SizeLimitExceeded
This commit is contained in:
parent
a45cfb89cb
commit
1ee138b681
|
|
@ -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()])
|
||||
|
||||
|
|
|
|||
|
|
@ -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', [
|
||||
|
|
|
|||
Loading…
Reference in New Issue