diff options
author | R David Murray <rdmurray@bitdance.com> | 2011-04-06 12:13:02 (GMT) |
---|---|---|
committer | R David Murray <rdmurray@bitdance.com> | 2011-04-06 12:13:02 (GMT) |
commit | c5c147289556d9941876bb4b209412ad52731eb0 (patch) | |
tree | f0fa8df167f2096f200c081858bf90496b3bb563 /Lib/email | |
parent | ae664fb528c86da44fbb9350cca05659c206bfc2 (diff) | |
download | cpython-c5c147289556d9941876bb4b209412ad52731eb0.zip cpython-c5c147289556d9941876bb4b209412ad52731eb0.tar.gz cpython-c5c147289556d9941876bb4b209412ad52731eb0.tar.bz2 |
#11605: don't use set/get_payload in feedparser; they do conversions.
Really the whole API needs to be gone over to restore the
separation of concerns; but that's what email6 is about.
Diffstat (limited to 'Lib/email')
-rw-r--r-- | Lib/email/feedparser.py | 4 | ||||
-rw-r--r-- | Lib/email/test/test_email.py | 47 |
2 files changed, 49 insertions, 2 deletions
diff --git a/Lib/email/feedparser.py b/Lib/email/feedparser.py index de8750d..60a8325 100644 --- a/Lib/email/feedparser.py +++ b/Lib/email/feedparser.py @@ -368,12 +368,12 @@ class FeedParser: end = len(mo.group(0)) self._last.epilogue = epilogue[:-end] else: - payload = self._last.get_payload() + payload = self._last._payload if isinstance(payload, str): mo = NLCRE_eol.search(payload) if mo: payload = payload[:-len(mo.group(0))] - self._last.set_payload(payload) + self._last._payload = payload self._input.pop_eof_matcher() self._pop_message() # Set the multipart up for newline cleansing, which will diff --git a/Lib/email/test/test_email.py b/Lib/email/test/test_email.py index 245f659..b4dc575 100644 --- a/Lib/email/test/test_email.py +++ b/Lib/email/test/test_email.py @@ -3168,6 +3168,53 @@ class Test8BitBytesHandling(unittest.TestCase): g = email.generator.BytesGenerator(s) g.flatten(msg, linesep='\r\n') self.assertEqual(s.getvalue(), text) + + def test_8bit_multipart(self): + # Issue 11605 + source = textwrap.dedent("""\ + Date: Fri, 18 Mar 2011 17:15:43 +0100 + To: foo@example.com + From: foodwatch-Newsletter <bar@example.com> + Subject: Aktuelles zu Japan, Klonfleisch und Smiley-System + Message-ID: <76a486bee62b0d200f33dc2ca08220ad@localhost.localdomain> + MIME-Version: 1.0 + Content-Type: multipart/alternative; + boundary="b1_76a486bee62b0d200f33dc2ca08220ad" + + --b1_76a486bee62b0d200f33dc2ca08220ad + Content-Type: text/plain; charset="utf-8" + Content-Transfer-Encoding: 8bit + + Guten Tag, , + + mit großer Betroffenheit verfolgen auch wir im foodwatch-Team die + Nachrichten aus Japan. + + + --b1_76a486bee62b0d200f33dc2ca08220ad + Content-Type: text/html; charset="utf-8" + Content-Transfer-Encoding: 8bit + + <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" + "http://www.w3.org/TR/html4/loose.dtd"> + <html lang="de"> + <head> + <title>foodwatch - Newsletter</title> + </head> + <body> + <p>mit großer Betroffenheit verfolgen auch wir im foodwatch-Team + die Nachrichten aus Japan.</p> + </body> + </html> + --b1_76a486bee62b0d200f33dc2ca08220ad-- + + """).encode('utf-8') + msg = email.message_from_bytes(source) + s = BytesIO() + g = email.generator.BytesGenerator(s) + g.flatten(msg) + self.assertEqual(s.getvalue(), source) + maxDiff = None |