[Python-checkins]
python/dist/src/Lib/email/test test_email.py, 1.53, 1.54
bwarsaw at users.sourceforge.net
bwarsaw at users.sourceforge.net
Sat May 8 23:16:05 EDT 2004
Update of /cvsroot/python/python/dist/src/Lib/email/test
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv9272
Modified Files:
test_email.py
Log Message:
A bunch of new tests, and updated tests for the email 3.0 FeedParser.
Index: test_email.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/email/test/test_email.py,v
retrieving revision 1.53
retrieving revision 1.54
diff -C2 -d -r1.53 -r1.54
*** test_email.py 20 Mar 2004 20:29:50 -0000 1.53
--- test_email.py 9 May 2004 03:16:03 -0000 1.54
***************
*** 1,3 ****
! # Copyright (C) 2001,2002,2003 Python Software Foundation
# email package unit tests
--- 1,3 ----
! # Copyright (C) 2001-2004 Python Software Foundation
# email package unit tests
***************
*** 10,14 ****
import warnings
from cStringIO import StringIO
- from types import StringType, ListType
import email
--- 10,13 ----
***************
*** 43,52 ****
warnings.filterwarnings('ignore', '', DeprecationWarning, __name__)
- try:
- True, False
- except NameError:
- True = 1
- False = 0
-
--- 42,45 ----
***************
*** 1101,1105 ****
unless(not m1.is_multipart())
! def test_no_parts_in_a_multipart(self):
outer = MIMEBase('multipart', 'mixed')
outer['Subject'] = 'A subject'
--- 1094,1132 ----
unless(not m1.is_multipart())
! def test_empty_multipart_idempotent(self):
! text = """\
! Content-Type: multipart/mixed; boundary="BOUNDARY"
! MIME-Version: 1.0
! Subject: A subject
! To: aperson at dom.ain
! From: bperson at dom.ain
!
!
! --BOUNDARY
!
!
! --BOUNDARY--
! """
! msg = Parser().parsestr(text)
! self.ndiffAssertEqual(text, msg.as_string())
!
! def test_no_parts_in_a_multipart_with_none_epilogue(self):
! outer = MIMEBase('multipart', 'mixed')
! outer['Subject'] = 'A subject'
! outer['To'] = 'aperson at dom.ain'
! outer['From'] = 'bperson at dom.ain'
! outer.set_boundary('BOUNDARY')
! self.ndiffAssertEqual(outer.as_string(), '''\
! Content-Type: multipart/mixed; boundary="BOUNDARY"
! MIME-Version: 1.0
! Subject: A subject
! To: aperson at dom.ain
! From: bperson at dom.ain
!
! --BOUNDARY
!
! --BOUNDARY--''')
!
! def test_no_parts_in_a_multipart_with_empty_epilogue(self):
outer = MIMEBase('multipart', 'mixed')
outer['Subject'] = 'A subject'
***************
*** 1109,1114 ****
outer.epilogue = ''
outer.set_boundary('BOUNDARY')
! msg = MIMEText('hello world')
! self.assertEqual(outer.as_string(), '''\
Content-Type: multipart/mixed; boundary="BOUNDARY"
MIME-Version: 1.0
--- 1136,1140 ----
outer.epilogue = ''
outer.set_boundary('BOUNDARY')
! self.ndiffAssertEqual(outer.as_string(), '''\
Content-Type: multipart/mixed; boundary="BOUNDARY"
MIME-Version: 1.0
***************
*** 1117,1122 ****
From: bperson at dom.ain
- --BOUNDARY
--BOUNDARY--
--- 1143,1148 ----
From: bperson at dom.ain
+ --BOUNDARY
--BOUNDARY--
***************
*** 1129,1137 ****
outer['To'] = 'aperson at dom.ain'
outer['From'] = 'bperson at dom.ain'
outer.preamble = ''
! outer.epilogue = ''
outer.set_boundary('BOUNDARY')
msg = MIMEText('hello world')
outer.attach(msg)
eq(outer.as_string(), '''\
Content-Type: multipart/mixed; boundary="BOUNDARY"
--- 1155,1265 ----
outer['To'] = 'aperson at dom.ain'
outer['From'] = 'bperson at dom.ain'
+ outer.set_boundary('BOUNDARY')
+ msg = MIMEText('hello world')
+ outer.attach(msg)
+ eq(outer.as_string(), '''\
+ Content-Type: multipart/mixed; boundary="BOUNDARY"
+ MIME-Version: 1.0
+ Subject: A subject
+ To: aperson at dom.ain
+ From: bperson at dom.ain
+
+ --BOUNDARY
+ Content-Type: text/plain; charset="us-ascii"
+ MIME-Version: 1.0
+ Content-Transfer-Encoding: 7bit
+
+ hello world
+ --BOUNDARY--''')
+
+ def test_seq_parts_in_a_multipart_with_empty_preamble(self):
+ eq = self.ndiffAssertEqual
+ outer = MIMEBase('multipart', 'mixed')
+ outer['Subject'] = 'A subject'
+ outer['To'] = 'aperson at dom.ain'
+ outer['From'] = 'bperson at dom.ain'
outer.preamble = ''
! msg = MIMEText('hello world')
! outer.attach(msg)
! outer.set_boundary('BOUNDARY')
! eq(outer.as_string(), '''\
! Content-Type: multipart/mixed; boundary="BOUNDARY"
! MIME-Version: 1.0
! Subject: A subject
! To: aperson at dom.ain
! From: bperson at dom.ain
!
!
! --BOUNDARY
! Content-Type: text/plain; charset="us-ascii"
! MIME-Version: 1.0
! Content-Transfer-Encoding: 7bit
!
! hello world
! --BOUNDARY--''')
!
!
! def test_seq_parts_in_a_multipart_with_none_preamble(self):
! eq = self.ndiffAssertEqual
! outer = MIMEBase('multipart', 'mixed')
! outer['Subject'] = 'A subject'
! outer['To'] = 'aperson at dom.ain'
! outer['From'] = 'bperson at dom.ain'
! outer.preamble = None
! msg = MIMEText('hello world')
! outer.attach(msg)
! outer.set_boundary('BOUNDARY')
! eq(outer.as_string(), '''\
! Content-Type: multipart/mixed; boundary="BOUNDARY"
! MIME-Version: 1.0
! Subject: A subject
! To: aperson at dom.ain
! From: bperson at dom.ain
!
! --BOUNDARY
! Content-Type: text/plain; charset="us-ascii"
! MIME-Version: 1.0
! Content-Transfer-Encoding: 7bit
!
! hello world
! --BOUNDARY--''')
!
!
! def test_seq_parts_in_a_multipart_with_none_epilogue(self):
! eq = self.ndiffAssertEqual
! outer = MIMEBase('multipart', 'mixed')
! outer['Subject'] = 'A subject'
! outer['To'] = 'aperson at dom.ain'
! outer['From'] = 'bperson at dom.ain'
! outer.epilogue = None
! msg = MIMEText('hello world')
! outer.attach(msg)
outer.set_boundary('BOUNDARY')
+ eq(outer.as_string(), '''\
+ Content-Type: multipart/mixed; boundary="BOUNDARY"
+ MIME-Version: 1.0
+ Subject: A subject
+ To: aperson at dom.ain
+ From: bperson at dom.ain
+
+ --BOUNDARY
+ Content-Type: text/plain; charset="us-ascii"
+ MIME-Version: 1.0
+ Content-Transfer-Encoding: 7bit
+
+ hello world
+ --BOUNDARY--''')
+
+
+ def test_seq_parts_in_a_multipart_with_empty_epilogue(self):
+ eq = self.ndiffAssertEqual
+ outer = MIMEBase('multipart', 'mixed')
+ outer['Subject'] = 'A subject'
+ outer['To'] = 'aperson at dom.ain'
+ outer['From'] = 'bperson at dom.ain'
+ outer.epilogue = ''
msg = MIMEText('hello world')
outer.attach(msg)
+ outer.set_boundary('BOUNDARY')
eq(outer.as_string(), '''\
Content-Type: multipart/mixed; boundary="BOUNDARY"
***************
*** 1150,1154 ****
''')
! def test_seq_parts_in_a_multipart(self):
eq = self.ndiffAssertEqual
outer = MIMEBase('multipart', 'mixed')
--- 1278,1283 ----
''')
!
! def test_seq_parts_in_a_multipart_with_nl_epilogue(self):
eq = self.ndiffAssertEqual
outer = MIMEBase('multipart', 'mixed')
***************
*** 1156,1161 ****
outer['To'] = 'aperson at dom.ain'
outer['From'] = 'bperson at dom.ain'
! outer.preamble = ''
! outer.epilogue = ''
msg = MIMEText('hello world')
outer.attach(msg)
--- 1285,1289 ----
outer['To'] = 'aperson at dom.ain'
outer['From'] = 'bperson at dom.ain'
! outer.epilogue = '\n'
msg = MIMEText('hello world')
outer.attach(msg)
***************
*** 1175,1178 ****
--- 1303,1307 ----
hello world
--BOUNDARY--
+
''')
***************
*** 1188,1210 ****
eq(msg.get_subtype(), None)
! ## XXX: No longer fails with the new parser. Should it ?
! ## def test_bogus_boundary(self):
! ## fp = openfile(findfile('msg_15.txt'))
! ## try:
! ## data = fp.read()
! ## finally:
! ## fp.close()
! ## p = Parser(strict=True)
! ## # Note, under a future non-strict parsing mode, this would parse the
! ## # message into the intended message tree.
! ## self.assertRaises(Errors.BoundaryError, p.parsestr, data)
def test_multipart_no_boundary(self):
! fp = openfile(findfile('msg_25.txt'))
! try:
! self.assertRaises(Errors.BoundaryError,
! email.message_from_file, fp)
! finally:
! fp.close()
def test_invalid_content_type(self):
--- 1317,1335 ----
eq(msg.get_subtype(), None)
! def test_same_boundary_inner_outer(self):
! unless = self.failUnless
! msg = self._msgobj('msg_15.txt')
! # XXX We can probably eventually do better
! inner = msg.get_payload(0)
! unless(hasattr(inner, 'defects'))
! self.assertEqual(len(inner.defects), 1)
! unless(isinstance(inner.defects[0], Errors.StartBoundaryNotFound))
def test_multipart_no_boundary(self):
! unless = self.failUnless
! msg = self._msgobj('msg_25.txt')
! unless(isinstance(msg.get_payload(), str))
! self.assertEqual(len(msg.defects), 1)
! unless(isinstance(msg.defects[0], Errors.NoBoundaryInMultipart))
def test_invalid_content_type(self):
***************
*** 1246,1265 ****
""")
! ## XXX: No longer fails with the new parser. Should it ?
! ## def test_no_separating_blank_line(self):
! ## eq = self.ndiffAssertEqual
! ## msg = self._msgobj('msg_35.txt')
! ## eq(msg.as_string(), """\
! ## From: aperson at dom.ain
! ## To: bperson at dom.ain
! ## Subject: here's something interesting
! ##
! ## counter to RFC 2822, there's no separating newline here
! ## """)
! ## # strict=True should raise an exception
! ## self.assertRaises(Errors.HeaderParseError,
! ## self._msgobj, 'msg_35.txt', True)
! ##
! ##
# Test RFC 2047 header encoding and decoding
--- 1371,1386 ----
""")
! def test_no_separating_blank_line(self):
! eq = self.ndiffAssertEqual
! msg = self._msgobj('msg_35.txt')
! eq(msg.as_string(), """\
! From: aperson at dom.ain
! To: bperson at dom.ain
! Subject: here's something interesting
!
! counter to RFC 2822, there's no separating newline here
! """)
!
!
# Test RFC 2047 header encoding and decoding
***************
*** 1352,1356 ****
eq(r.get_type(), 'message/rfc822')
payload = r.get_payload()
! unless(type(payload), ListType)
eq(len(payload), 1)
subpart = payload[0]
--- 1473,1477 ----
eq(r.get_type(), 'message/rfc822')
payload = r.get_payload()
! unless(isinstance(payload, list))
eq(len(payload), 1)
subpart = payload[0]
***************
*** 1393,1397 ****
eq(msg.get_type(), 'message/rfc822')
payload = msg.get_payload()
! unless(isinstance(payload, ListType))
eq(len(payload), 1)
submsg = payload[0]
--- 1514,1518 ----
eq(msg.get_type(), 'message/rfc822')
payload = msg.get_payload()
! unless(isinstance(payload, list))
eq(len(payload), 1)
submsg = payload[0]
***************
*** 1450,1454 ****
eq(subpart.get_type(), 'message/rfc822')
payload = subpart.get_payload()
! unless(isinstance(payload, ListType))
eq(len(payload), 1)
subsubpart = payload[0]
--- 1571,1575 ----
eq(subpart.get_type(), 'message/rfc822')
payload = subpart.get_payload()
! unless(isinstance(payload, list))
eq(len(payload), 1)
subsubpart = payload[0]
***************
*** 1469,1473 ****
msg['To'] = 'bperson at dom.ain'
msg['Subject'] = 'Test'
! msg.preamble = 'MIME message\n'
msg.epilogue = 'End of MIME message\n'
msg1 = MIMEText('One')
--- 1590,1594 ----
msg['To'] = 'bperson at dom.ain'
msg['Subject'] = 'Test'
! msg.preamble = 'MIME message'
msg.epilogue = 'End of MIME message\n'
msg1 = MIMEText('One')
***************
*** 1561,1565 ****
# Set up container
container = MIMEMultipart('digest', 'BOUNDARY')
! container.epilogue = '\n'
# Set up subparts
subpart1a = MIMEText('message 1\n')
--- 1682,1686 ----
# Set up container
container = MIMEMultipart('digest', 'BOUNDARY')
! container.epilogue = ''
# Set up subparts
subpart1a = MIMEText('message 1\n')
***************
*** 1730,1733 ****
--- 1851,1858 ----
self._idempotent(msg, text)
+ def test_nested_multipart_mixeds(self):
+ msg, text = self._msgobj('msg_12a.txt')
+ self._idempotent(msg, text)
+
def test_content_type(self):
eq = self.assertEquals
***************
*** 1742,1747 ****
eq(params['report-type'], 'delivery-status')
eq(params['boundary'], 'D1690A7AC1.996856090/mail.example.com')
! eq(msg.preamble, 'This is a MIME-encapsulated message.\n\n')
! eq(msg.epilogue, '\n\n')
eq(len(msg.get_payload()), 3)
# Make sure the subparts are what we expect
--- 1867,1872 ----
eq(params['report-type'], 'delivery-status')
eq(params['boundary'], 'D1690A7AC1.996856090/mail.example.com')
! eq(msg.preamble, 'This is a MIME-encapsulated message.\n')
! eq(msg.epilogue, '\n')
eq(len(msg.get_payload()), 3)
# Make sure the subparts are what we expect
***************
*** 1756,1760 ****
self.failUnless(isinstance(msg3, Message))
payload = msg3.get_payload()
! unless(isinstance(payload, ListType))
eq(len(payload), 1)
msg4 = payload[0]
--- 1881,1885 ----
self.failUnless(isinstance(msg3, Message))
payload = msg3.get_payload()
! unless(isinstance(payload, list))
eq(len(payload), 1)
msg4 = payload[0]
***************
*** 1771,1780 ****
# that submessage has a type of text/plain
payload = msg.get_payload()
! unless(isinstance(payload, ListType))
eq(len(payload), 1)
msg1 = payload[0]
self.failUnless(isinstance(msg1, Message))
eq(msg1.get_type(), 'text/plain')
! self.failUnless(isinstance(msg1.get_payload(), StringType))
eq(msg1.get_payload(), '\n')
--- 1896,1905 ----
# that submessage has a type of text/plain
payload = msg.get_payload()
! unless(isinstance(payload, list))
eq(len(payload), 1)
msg1 = payload[0]
self.failUnless(isinstance(msg1, Message))
eq(msg1.get_type(), 'text/plain')
! self.failUnless(isinstance(msg1.get_payload(), str))
eq(msg1.get_payload(), '\n')
***************
*** 2028,2031 ****
--- 2153,2157 ----
def test_body_line_iterator(self):
eq = self.assertEqual
+ neq = self.ndiffAssertEqual
# First a simple non-multipart message
msg = self._msgobj('msg_01.txt')
***************
*** 2033,2037 ****
lines = list(it)
eq(len(lines), 6)
! eq(EMPTYSTRING.join(lines), msg.get_payload())
# Now a more complicated multipart
msg = self._msgobj('msg_02.txt')
--- 2159,2163 ----
lines = list(it)
eq(len(lines), 6)
! neq(EMPTYSTRING.join(lines), msg.get_payload())
# Now a more complicated multipart
msg = self._msgobj('msg_02.txt')
***************
*** 2041,2045 ****
fp = openfile('msg_19.txt')
try:
! eq(EMPTYSTRING.join(lines), fp.read())
finally:
fp.close()
--- 2167,2171 ----
fp = openfile('msg_19.txt')
try:
! neq(EMPTYSTRING.join(lines), fp.read())
finally:
fp.close()
***************
*** 2095,2100 ****
eq(msg['to'], 'ppp at zzz.org')
eq(msg.get_type(), 'multipart/mixed')
! eq(msg.is_multipart(), 0)
! self.failUnless(isinstance(msg.get_payload(), StringType))
def test_whitespace_continuaton(self):
--- 2221,2226 ----
eq(msg['to'], 'ppp at zzz.org')
eq(msg.get_type(), 'multipart/mixed')
! self.failIf(msg.is_multipart())
! self.failUnless(isinstance(msg.get_payload(), str))
def test_whitespace_continuaton(self):
More information about the Python-checkins
mailing list