mirror of
https://github.com/python/cpython.git
synced 2025-07-24 19:54:21 +00:00
#1555570: correctly handle a \r\n that is split by the read buffer.
Patch and test by Tony Nelson.
This commit is contained in:
parent
cbe1a4e28f
commit
45bf773f60
3 changed files with 40 additions and 0 deletions
|
@ -2454,6 +2454,39 @@ Do you like this message?
|
|||
-Me
|
||||
""")
|
||||
|
||||
def test_pushCR_LF(self):
|
||||
'''FeedParser BufferedSubFile.push() assumed it received complete
|
||||
line endings. A CR ending one push() followed by a LF starting
|
||||
the next push() added an empty line.
|
||||
'''
|
||||
imt = [
|
||||
("a\r \n", 2),
|
||||
("b", 0),
|
||||
("c\n", 1),
|
||||
("", 0),
|
||||
("d\r\n", 1),
|
||||
("e\r", 0),
|
||||
("\nf", 1),
|
||||
("\r\n", 1),
|
||||
]
|
||||
from email.feedparser import BufferedSubFile, NeedMoreData
|
||||
bsf = BufferedSubFile()
|
||||
om = []
|
||||
nt = 0
|
||||
for il, n in imt:
|
||||
bsf.push(il)
|
||||
nt += n
|
||||
n1 = 0
|
||||
while True:
|
||||
ol = bsf.readline()
|
||||
if ol == NeedMoreData:
|
||||
break
|
||||
om.append(ol)
|
||||
n1 += 1
|
||||
self.assertTrue(n == n1)
|
||||
self.assertTrue(len(om) == nt)
|
||||
self.assertTrue(''.join([il for il, n in imt]) == ''.join(om))
|
||||
|
||||
|
||||
|
||||
class TestParsers(TestEmailBase):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue