[Python-checkins] cpython (3.1): #9298: restore proper folding of base64 encoded bodies.

r.david.murray python-checkins at python.org
Wed Mar 16 21:15:20 CET 2011


http://hg.python.org/cpython/rev/062d09d7bf94
changeset: 68615:062d09d7bf94
branch: 3.1
parent: 68612:d108a7dff2a0
user: R David Murray <rdmurray at bitdance.com>
date: Wed Mar 16 15:52:22 2011 -0400
summary:
 #9298: restore proper folding of base64 encoded bodies.
Patch by Yves Dorfsman.
files:
 Lib/email/encoders.py
 Lib/email/test/test_email.py
 Misc/ACKS
 Misc/NEWS
diff --git a/Lib/email/encoders.py b/Lib/email/encoders.py
--- a/Lib/email/encoders.py
+++ b/Lib/email/encoders.py
@@ -12,7 +12,7 @@
 ]
 
 
-from base64 import b64encode as _bencode
+from base64 import encodebytes as _bencode
 from quopri import encodestring as _encodestring
 
 
diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -553,9 +553,18 @@
 msg['Dummy'] = 'dummy\nX-Injected-Header: test'
 self.assertRaises(errors.HeaderParseError, msg.as_string)
 
-
 # Test the email.encoders module
 class TestEncoders(unittest.TestCase):
+
+ def test_EncodersEncode_base64(self):
+ with openfile('PyBanner048.gif', 'rb') as fp:
+ bindata = fp.read()
+ mimed = email.mime.image.MIMEImage(bindata)
+ base64ed = mimed.get_payload()
+ # the transfer-encoded body lines should all be <=76 characters
+ lines = base64ed.split('\n')
+ self.assertLessEqual(max([ len(x) for x in lines ]), 76)
+
 def test_encode_empty_payload(self):
 eq = self.assertEqual
 msg = Message()
@@ -1107,10 +1116,11 @@
 
 def test_body(self):
 eq = self.assertEqual
- bytes = b'\xfa\xfb\xfc\xfd\xfe\xff'
- msg = MIMEApplication(bytes)
- eq(msg.get_payload(), '+vv8/f7/')
- eq(msg.get_payload(decode=True), bytes)
+ bytesdata = b'\xfa\xfb\xfc\xfd\xfe\xff'
+ msg = MIMEApplication(bytesdata)
+ # whitespace in the cte encoded block is RFC-irrelevant.
+ eq(msg.get_payload().strip(), '+vv8/f7/')
+ eq(msg.get_payload(decode=True), bytesdata)
 
 
 
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -202,6 +202,7 @@
 Jaromir Dolecek
 Ismail Donmez
 Dima Dorfman
+Yves Dorfsman
 Cesar Douady
 Dean Draayer
 Fred L. Drake, Jr.
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -40,6 +40,10 @@
 Library
 -------
 
+- Issue #9298: base64 bodies weren't being folded to line lengths less than 78,
+ which was a regression relative to Python2. Unlike Python2, the last line
+ of the folded body now ends with a carriage return.
+
 - Issue #11569: use absolute path to the sysctl command in multiprocessing to
 ensure that it will be found regardless of the shell PATH. This ensures
 that multiprocessing.cpu_count works on default installs of MacOSX.
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /