Mercurial > cpython-lru_cache-weakref
diff Lib/test/test_array.py @ 50214:aebf7124dd32 3.0
Merged revisions 67840 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/branches/py3k
........
r67840 | antoine.pitrou | 2008-12-18 18:08:32 +0100 (jeu., 18 déc. 2008) | 3 lines
Issue #4583: crash after resizing an array.array which has buffer exports.
........
| author | Antoine Pitrou <solipsis@pitrou.net> |
|---|---|
| date | Thu, 18 Dec 2008 17:14:35 +0000 |
| parents | c0ac47984b11 |
| children | 4229a4b14f1d |
line wrap: on
line diff
--- a/Lib/test/test_array.py Tue Dec 16 15:23:10 2008 +0000 +++ b/Lib/test/test_array.py Thu Dec 18 17:14:35 2008 +0000 @@ -8,6 +8,7 @@ from weakref import proxy import array, io, math from pickle import loads, dumps +import operator class ArraySubclass(array.array): pass @@ -709,8 +710,23 @@ def test_buffer(self): a = array.array(self.typecode, self.example) - b = bytes(memoryview(a)) + m = memoryview(a) + b = bytes(m) + self.assertEqual(b, a.tostring()) self.assertEqual(b[0], a.tostring()[0]) + # Resizing is forbidden when there are buffer exports + self.assertRaises(BufferError, a.append, a[0]) + self.assertRaises(BufferError, a.extend, a[0:1]) + self.assertRaises(BufferError, a.remove, a[0]) + self.assertRaises(BufferError, a.fromlist, a.tolist()) + self.assertRaises(BufferError, a.fromstring, a.tostring()) + if self.typecode == 'u': + self.assertRaises(BufferError, a.fromunicode, a.tounicode()) + self.assertRaises(BufferError, operator.setitem, a, slice(0, 0), a) + self.assertRaises(BufferError, operator.delitem, a, 0) + self.assertRaises(BufferError, operator.delitem, a, slice(0, 1)) + self.assertRaises(BufferError, operator.irepeat, a, 2) + self.assertRaises(BufferError, operator.irepeat, a, 0) def test_weakref(self): s = array.array(self.typecode, self.example)
