[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