diff options
Diffstat (limited to 'Lib/test/test_bytes.py')
-rw-r--r-- | Lib/test/test_bytes.py | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index 45df1f34b5..36defb8a84 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -752,6 +752,38 @@ class ByteArrayTest(BaseBytesTest): self.assertEqual(b, b"") self.assertEqual(c, b"") + # XXX memoryview not available + def XXXtest_resize_forbidden(self): + # #4509: can't resize a bytearray when there are buffer exports, even + # if it wouldn't reallocate the underlying buffer. + # Furthermore, no destructive changes to the buffer may be applied + # before raising the error. + b = bytearray(range(10)) + v = memoryview(b) + def resize(n): + b[1:-1] = range(n + 1, 2*n - 1) + resize(10) + orig = b[:] + self.assertRaises(BufferError, resize, 11) + self.assertEquals(b, orig) + self.assertRaises(BufferError, resize, 9) + self.assertEquals(b, orig) + self.assertRaises(BufferError, resize, 0) + self.assertEquals(b, orig) + # Other operations implying resize + self.assertRaises(BufferError, b.pop, 0) + self.assertEquals(b, orig) + self.assertRaises(BufferError, b.remove, b[1]) + self.assertEquals(b, orig) + def delitem(): + del b[1] + self.assertRaises(BufferError, delitem) + self.assertEquals(b, orig) + # deleting a non-contiguous slice + def delslice(): + b[1:-1:2] = b"" + self.assertRaises(BufferError, delslice) + self.assertEquals(b, orig) class AssortedBytesTest(unittest.TestCase): # |