summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_buffer.py
diff options
context:
space:
mode:
authorNikita Sobolev <mail@sobolevn.me>2024-02-04 19:16:43 (GMT)
committerGitHub <noreply@github.com>2024-02-04 19:16:43 (GMT)
commit929d44e15a5667151beadb2d3a2528cd641639d6 (patch)
tree31c14abe2cafaf3ac27a22f7298f456668fed6ee /Lib/test/test_buffer.py
parentda8f9fb2ea65cc2784c2400fc39ad8c800a67a42 (diff)
downloadcpython-929d44e15a5667151beadb2d3a2528cd641639d6.zip
cpython-929d44e15a5667151beadb2d3a2528cd641639d6.tar.gz
cpython-929d44e15a5667151beadb2d3a2528cd641639d6.tar.bz2
gh-114685: PyBuffer_FillInfo() now raises on PyBUF_{READ,WRITE} (GH-114802)
Diffstat (limited to 'Lib/test/test_buffer.py')
-rw-r--r--Lib/test/test_buffer.py21
1 files changed, 21 insertions, 0 deletions
diff --git a/Lib/test/test_buffer.py b/Lib/test/test_buffer.py
index 535b795..5b1b95b 100644
--- a/Lib/test/test_buffer.py
+++ b/Lib/test/test_buffer.py
@@ -4591,6 +4591,27 @@ class TestPythonBufferProtocol(unittest.TestCase):
self.assertRaises(SystemError, buf.__buffer__, PyBUF_READ)
self.assertRaises(SystemError, buf.__buffer__, PyBUF_WRITE)
+ @unittest.skipIf(_testcapi is None, "requires _testcapi")
+ def test_c_fill_buffer_invalid_flags(self):
+ # PyBuffer_FillInfo
+ source = b"abc"
+ self.assertRaises(SystemError, _testcapi.buffer_fill_info,
+ source, 0, PyBUF_READ)
+ self.assertRaises(SystemError, _testcapi.buffer_fill_info,
+ source, 0, PyBUF_WRITE)
+
+ @unittest.skipIf(_testcapi is None, "requires _testcapi")
+ def test_c_fill_buffer_readonly_and_writable(self):
+ source = b"abc"
+ with _testcapi.buffer_fill_info(source, 1, PyBUF_SIMPLE) as m:
+ self.assertEqual(bytes(m), b"abc")
+ self.assertTrue(m.readonly)
+ with _testcapi.buffer_fill_info(source, 0, PyBUF_WRITABLE) as m:
+ self.assertEqual(bytes(m), b"abc")
+ self.assertFalse(m.readonly)
+ self.assertRaises(BufferError, _testcapi.buffer_fill_info,
+ source, 1, PyBUF_WRITABLE)
+
def test_inheritance(self):
class A(bytearray):
def __buffer__(self, flags):