diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py --- a/Lib/test/test_email/test_email.py +++ b/Lib/test/test_email/test_email.py @@ -10,6 +10,7 @@ from io import StringIO, BytesIO from itertools import chain +from random import choice import email import email.policy @@ -3364,6 +3365,28 @@ self.assertEqual(''.join([il for il, n in imt]), ''.join(om)) + def test_push_random(self): + from email.feedparser import BufferedSubFile, NeedMoreData + + n = 10000 + chunksize = 5 + chars = 'abcd \t\r\n' + + s = ''.join(choice(chars) for i in range(n)) + '\n' + target = s.splitlines(True) + + bsf = BufferedSubFile() + lines = [] + for i in range(0, n+1, chunksize): + chunk = s[i:i+chunksize] + bsf.push(chunk) + while True: + ol = bsf.readline() + if ol == NeedMoreData: + break + lines.append(ol) + self.assertEqual(lines, target) + class TestParsers(TestEmailBase):