summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorR David Murray <rdmurray@bitdance.com>2011-03-16 20:13:07 (GMT)
committerR David Murray <rdmurray@bitdance.com>2011-03-16 20:13:07 (GMT)
commit78099bb153c2b8399f80cb32798dda7215945157 (patch)
treefe4693ce1f16c2e5a81de70ea1a42b401ef3c339
parent3137d25b43ad52905a22158112bff4b0fa488b3b (diff)
parent6d94bd470e3f4aa1dc7295b034553509ace2c654 (diff)
downloadcpython-78099bb153c2b8399f80cb32798dda7215945157.zip
cpython-78099bb153c2b8399f80cb32798dda7215945157.tar.gz
cpython-78099bb153c2b8399f80cb32798dda7215945157.tar.bz2
Merge #9298 fix.
-rw-r--r--Lib/email/encoders.py2
-rw-r--r--Lib/email/test/test_email.py20
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS4
4 files changed, 21 insertions, 6 deletions
diff --git a/Lib/email/encoders.py b/Lib/email/encoders.py
index c66f4cc..e5c099f 100644
--- a/Lib/email/encoders.py
+++ b/Lib/email/encoders.py
@@ -12,7 +12,7 @@ __all__ = [
]
-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
index a6ea1d1..b9fd8d0 100644
--- a/Lib/email/test/test_email.py
+++ b/Lib/email/test/test_email.py
@@ -573,9 +573,18 @@ class TestMessageAPI(TestEmailBase):
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()
@@ -1141,10 +1150,11 @@ class TestMIMEApplication(unittest.TestCase):
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
index 1e2b83d..0cbc670 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -225,6 +225,7 @@ Jaromir Dolecek
Ismail Donmez
Marcos Donolo
Dima Dorfman
+Yves Dorfsman
Cesar Douady
Dean Draayer
Fred L. Drake, Jr.
diff --git a/Misc/NEWS b/Misc/NEWS
index 419b0d5..9af1442 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -40,6 +40,10 @@ Core and Builtins
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 #11560: shutil.unpack_archive now correctly handles the format
parameter. Patch by Evan Dandrea.