better error checks (#607)

* check buffer exports
* add error messages
This commit is contained in:
Inada Naoki 2024-05-06 03:33:48 +09:00 committed by GitHub
parent e1068087e0
commit e0f0e145f1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 57 additions and 15 deletions

View file

@ -1,6 +1,6 @@
#!/usr/bin/env python
from pytest import raises
from msgpack import packb, unpackb
from msgpack import packb, unpackb, Packer
def test_unpack_buffer():
@ -27,3 +27,23 @@ def test_unpack_memoryview():
assert [b"foo", b"bar"] == obj
expected_type = bytes
assert all(type(s) == expected_type for s in obj)
def test_packer_getbuffer():
packer = Packer(autoreset=False)
packer.pack_array_header(2)
packer.pack(42)
packer.pack("hello")
buffer = packer.getbuffer()
assert isinstance(buffer, memoryview)
assert bytes(buffer) == b"\x92*\xa5hello"
if Packer.__module__ == "msgpack._cmsgpack": # only for Cython
# cython Packer supports buffer protocol directly
assert bytes(packer) == b"\x92*\xa5hello"
with raises(BufferError):
packer.pack(42)
buffer.release()
packer.pack(42)
assert bytes(packer) == b"\x92*\xa5hello*"