#11062: Fix adding a message from file to Babyl mailbox

This commit is contained in:
Petri Lehtinen 2012-08-15 14:22:46 +03:00
parent becfcc0a6b
commit 2d44ceeada
3 changed files with 16 additions and 1 deletions

View File

@ -1386,9 +1386,9 @@ class Babyl(_singlefileMailbox):
line = message.readline() line = message.readline()
self._file.write(line.replace('\n', os.linesep)) self._file.write(line.replace('\n', os.linesep))
if line == '\n' or line == '': if line == '\n' or line == '':
self._file.write('*** EOOH ***' + os.linesep)
if first_pass: if first_pass:
first_pass = False first_pass = False
self._file.write('*** EOOH ***' + os.linesep)
message.seek(original_pos) message.seek(original_pos)
else: else:
break break

View File

@ -8,6 +8,7 @@ import email.message
import re import re
import shutil import shutil
import StringIO import StringIO
import tempfile
from test import test_support from test import test_support
import unittest import unittest
import mailbox import mailbox
@ -75,6 +76,18 @@ class TestMailbox(TestBase):
for i in (1, 2, 3, 4): for i in (1, 2, 3, 4):
self._check_sample(self._box[keys[i]]) self._check_sample(self._box[keys[i]])
def test_add_file(self):
with tempfile.TemporaryFile('w+') as f:
f.write(_sample_message)
f.seek(0)
key = self._box.add(f)
self.assertEqual(self._box.get_string(key).split('\n'),
_sample_message.split('\n'))
def test_add_StringIO(self):
key = self._box.add(StringIO.StringIO(self._template % "0"))
self.assertEqual(self._box.get_string(key), self._template % "0")
def test_remove(self): def test_remove(self):
# Remove messages using remove() # Remove messages using remove()
self._test_remove_or_delitem(self._box.remove) self._test_remove_or_delitem(self._box.remove)

View File

@ -92,6 +92,8 @@ Core and Builtins
Library Library
------- -------
- Issue #11062: Fix adding a message from file to Babyl mailbox.
- Issue #15646: Prevent equivalent of a fork bomb when using - Issue #15646: Prevent equivalent of a fork bomb when using
multiprocessing on Windows without the "if __name__ == '__main__'" multiprocessing on Windows without the "if __name__ == '__main__'"
idiom. idiom.