diff options
author | Serhiy Storchaka <storchaka@gmail.com> | 2016-03-06 12:12:04 (GMT) |
---|---|---|
committer | Serhiy Storchaka <storchaka@gmail.com> | 2016-03-06 12:12:04 (GMT) |
commit | de128e19e2c6186408692a37f563550df13a390c (patch) | |
tree | 30902cbc57725b33359163cee5bb30582cccf831 /Lib/test/test_bytes.py | |
parent | 5608411a964f7fd5a35eda04b297e0d77de9958d (diff) | |
parent | aabafe7bc293b377629ff97c3e955956eaf6350a (diff) | |
download | cpython-de128e19e2c6186408692a37f563550df13a390c.zip cpython-de128e19e2c6186408692a37f563550df13a390c.tar.gz cpython-de128e19e2c6186408692a37f563550df13a390c.tar.bz2 |
Issue #26015: Added new tests for pickling iterators of mutable sequences.
Diffstat (limited to 'Lib/test/test_bytes.py')
-rw-r--r-- | Lib/test/test_bytes.py | 42 |
1 files changed, 39 insertions, 3 deletions
diff --git a/Lib/test/test_bytes.py b/Lib/test/test_bytes.py index e11da5a..5d0351b 100644 --- a/Lib/test/test_bytes.py +++ b/Lib/test/test_bytes.py @@ -609,10 +609,9 @@ class BaseBytesTest: self.assertEqual(list(it), data) it = pickle.loads(d) - try: - next(it) - except StopIteration: + if not b: continue + next(it) d = pickle.dumps(it, proto) it = pickle.loads(d) self.assertEqual(list(it), data[1:]) @@ -1379,6 +1378,43 @@ class ByteArrayTest(BaseBytesTest, unittest.TestCase): from _testcapi import getbuffer_with_null_view self.assertRaises(BufferError, getbuffer_with_null_view, bytearray()) + def test_iterator_pickling2(self): + orig = bytearray(b'abc') + data = list(b'qwerty') + for proto in range(pickle.HIGHEST_PROTOCOL + 1): + # initial iterator + itorig = iter(orig) + d = pickle.dumps((itorig, orig), proto) + it, b = pickle.loads(d) + b[:] = data + self.assertEqual(type(it), type(itorig)) + self.assertEqual(list(it), data) + + # running iterator + next(itorig) + d = pickle.dumps((itorig, orig), proto) + it, b = pickle.loads(d) + b[:] = data + self.assertEqual(type(it), type(itorig)) + self.assertEqual(list(it), data[1:]) + + # empty iterator + for i in range(1, len(orig)): + next(itorig) + d = pickle.dumps((itorig, orig), proto) + it, b = pickle.loads(d) + b[:] = data + self.assertEqual(type(it), type(itorig)) + self.assertEqual(list(it), data[len(orig):]) + + # exhausted iterator + self.assertRaises(StopIteration, next, itorig) + d = pickle.dumps((itorig, orig), proto) + it, b = pickle.loads(d) + b[:] = data + self.assertEqual(list(it), []) + + class AssortedBytesTest(unittest.TestCase): # # Test various combinations of bytes and bytearray |