[Python-checkins] cpython: #11558: Better message if attach called on non-multipart.

r.david.murray python-checkins at python.org
Thu Mar 6 17:44:33 CET 2014


http://hg.python.org/cpython/rev/302c8fdb17e3
changeset: 89490:302c8fdb17e3
user: R David Murray <rdmurray at bitdance.com>
date: Thu Mar 06 11:44:17 2014 -0500
summary:
 #11558: Better message if attach called on non-multipart.
Original patch by Varun Sharma.
files:
 Lib/email/message.py | 6 +++++-
 Lib/test/test_email/test_email.py | 8 ++++++++
 Misc/ACKS | 1 +
 Misc/NEWS | 4 ++++
 4 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/Lib/email/message.py b/Lib/email/message.py
--- a/Lib/email/message.py
+++ b/Lib/email/message.py
@@ -203,7 +203,11 @@
 if self._payload is None:
 self._payload = [payload]
 else:
- self._payload.append(payload)
+ try:
+ self._payload.append(payload)
+ except AttributeError:
+ raise TypeError("Attach is not valid on a message with a"
+ " non-multipart payload")
 
 def get_payload(self, i=None, decode=False):
 """Return a reference to the payload.
diff --git a/Lib/test/test_email/test_email.py b/Lib/test/test_email/test_email.py
--- a/Lib/test/test_email/test_email.py
+++ b/Lib/test/test_email/test_email.py
@@ -124,6 +124,14 @@
 msg.set_payload([])
 self.assertEqual(msg.get_payload(), [])
 
+ def test_attach_when_payload_is_string(self):
+ msg = Message()
+ msg['Content-Type'] = 'multipart/mixed'
+ msg.set_payload('string payload')
+ sub_msg = MIMEMessage(Message())
+ self.assertRaisesRegex(TypeError, "[Aa]ttach.*non-multipart",
+ msg.attach, sub_msg)
+
 def test_get_charsets(self):
 eq = self.assertEqual
 
diff --git a/Misc/ACKS b/Misc/ACKS
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -1188,6 +1188,7 @@
 Ha Shao
 Mark Shannon
 Richard Shapiro
+Varun Sharma
 Vlad Shcherbina
 Justin Sheehy
 Charlie Shepherd
diff --git a/Misc/NEWS b/Misc/NEWS
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -20,6 +20,10 @@
 Library
 -------
 
+- Issue #11558: ``email.message.Message.attach`` now returns a more
+ useful error message if ``attach`` is called on a message for which
+ ``is_multipart`` is False.
+
 - Issue #20283: RE pattern methods now accept the string keyword parameters
 as documented. The pattern and source keyword parameters are left as
 deprecated aliases.
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

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