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

This commit is contained in:
Petri Lehtinen 2012-08-15 14:00:40 +03:00
parent 2b209cd78d
commit 3d12c4317c
3 changed files with 9 additions and 13 deletions

View file

@ -1443,9 +1443,9 @@ def _install_message(self, message):
line = line[:-1] + b'\n'
self._file.write(line.replace(b'\n', linesep))
if line == b'\n' or not line:
self._file.write(b'*** EOOH ***' + linesep)
if first_pass:
first_pass = False
self._file.write(b'*** EOOH ***' + linesep)
message.seek(original_pos)
else:
break

View file

@ -148,20 +148,16 @@ def test_add_binary_file(self):
f.write(_bytes_sample_message)
f.seek(0)
key = self._box.add(f)
# See issue 11062
if not isinstance(self._box, mailbox.Babyl):
self.assertEqual(self._box.get_bytes(key).split(b'\n'),
_bytes_sample_message.split(b'\n'))
self.assertEqual(self._box.get_bytes(key).split(b'\n'),
_bytes_sample_message.split(b'\n'))
def test_add_binary_nonascii_file(self):
with tempfile.TemporaryFile('wb+') as f:
f.write(self._non_latin_bin_msg)
f.seek(0)
key = self._box.add(f)
# See issue 11062
if not isinstance(self._box, mailbox.Babyl):
self.assertEqual(self._box.get_bytes(key).split(b'\n'),
self._non_latin_bin_msg.split(b'\n'))
self.assertEqual(self._box.get_bytes(key).split(b'\n'),
self._non_latin_bin_msg.split(b'\n'))
def test_add_text_file_warns(self):
with tempfile.TemporaryFile('w+') as f:
@ -169,10 +165,8 @@ def test_add_text_file_warns(self):
f.seek(0)
with self.assertWarns(DeprecationWarning):
key = self._box.add(f)
# See issue 11062
if not isinstance(self._box, mailbox.Babyl):
self.assertEqual(self._box.get_bytes(key).split(b'\n'),
_bytes_sample_message.split(b'\n'))
self.assertEqual(self._box.get_bytes(key).split(b'\n'),
_bytes_sample_message.split(b'\n'))
def test_add_StringIO_warns(self):
with self.assertWarns(DeprecationWarning):

View file

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