[Python-checkins] CVS: python/dist/src/Lib/test test_mailbox.py,1.3,1.4

Fred L. Drake fdrake@users.sourceforge.net
Mon, 21 May 2001 13:23:23 -0700


Update of /cvsroot/python/python/dist/src/Lib/test
In directory usw-pr-cvs1:/tmp/cvs-serv5222

Modified Files:
	test_mailbox.py 
Log Message:

Re-write the mailbox test suite to use PyUnit.  Cover a lot more ground
for the Maildir mailbox format.  This still does not address other mailbox
formats.


Index: test_mailbox.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/test/test_mailbox.py,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** test_mailbox.py	2001/04/10 15:01:20	1.3
--- test_mailbox.py	2001/05/21 20:23:21	1.4
***************
*** 2,7 ****
  import os
  import test_support
  
! # cleanup
  try:
      os.unlink(test_support.TESTFN)
--- 2,9 ----
  import os
  import test_support
+ import time
+ import unittest
  
! # cleanup earlier tests
  try:
      os.unlink(test_support.TESTFN)
***************
*** 9,34 ****
      pass
  
- # create a new maildir mailbox to work with:
- curdir = os.path.join(test_support.TESTFN, "cur")
- newdir = os.path.join(test_support.TESTFN, "new")
- try:
-     os.mkdir(test_support.TESTFN)
-     os.mkdir(curdir)
-     os.mkdir(newdir)
- 
-     # Test for regression on bug #117490:
-     # http://sourceforge.net/bugs/?func=detailbug&bug_id=117490&group_id=5470
-     # Make sure the boxes attribute actually gets set.
-     mbox = mailbox.Maildir(test_support.TESTFN)
-     mbox.boxes
-     print "newly created maildir contains", len(mbox.boxes), "messages"
  
      # XXX We still need more tests!
  
! finally:
!     try: os.rmdir(newdir)
!     except os.error: pass
!     try: os.rmdir(curdir)
!     except os.error: pass
!     try: os.rmdir(test_support.TESTFN)
!     except os.error: pass
--- 11,94 ----
      pass
  
  
+ DUMMY_MESSAGE = """\
+ From: some.body@dummy.domain
+ To: me@my.domain
+ 
+ This is a dummy message.
+ """
+ 
+ 
+ class MaildirTestCase(unittest.TestCase):
+ 
+     def setUp(self):
+         # create a new maildir mailbox to work with:
+         self._dir = test_support.TESTFN
+         os.mkdir(self._dir)
+         os.mkdir(os.path.join(self._dir, "cur"))
+         os.mkdir(os.path.join(self._dir, "tmp"))
+         os.mkdir(os.path.join(self._dir, "new"))
+         self._counter = 1
+         self._msgfiles = []
+ 
+     def tearDown(self):
+         map(os.unlink, self._msgfiles)
+         os.rmdir(os.path.join(self._dir, "cur"))
+         os.rmdir(os.path.join(self._dir, "tmp"))
+         os.rmdir(os.path.join(self._dir, "new"))
+         os.rmdir(self._dir)
+ 
+     def createMessage(self, dir):
+         t = int(time.time())
+         pid = self._counter
+         self._counter += 1
+         filename = "%s.%s.myhostname.mydomain" % (t, pid)
+         tmpname = os.path.join(self._dir, "tmp", filename)
+         newname = os.path.join(self._dir, dir, filename)
+         fp = open(tmpname, "w")
+         self._msgfiles.append(tmpname)
+         fp.write(DUMMY_MESSAGE)
+         fp.close()
+         os.link(tmpname, newname)
+         self._msgfiles.append(newname)
+ 
+     def test_empty_maildir(self):
+         """Test an empty maildir mailbox"""
+         # Test for regression on bug #117490:
+         # Make sure the boxes attribute actually gets set.
+         self.mbox = mailbox.Maildir(test_support.TESTFN)
+         self.assert_(hasattr(self.mbox, "boxes"))
+         self.assert_(len(self.mbox.boxes) == 0)
+         self.assert_(self.mbox.next() is None)
+         self.assert_(self.mbox.next() is None)
+ 
+     def test_nonempty_maildir_cur(self):
+         self.createMessage("cur")
+         self.mbox = mailbox.Maildir(test_support.TESTFN)
+         self.assert_(len(self.mbox.boxes) == 1)
+         self.assert_(self.mbox.next() is not None)
+         self.assert_(self.mbox.next() is None)
+         self.assert_(self.mbox.next() is None)
+ 
+     def test_nonempty_maildir_new(self):
+         self.createMessage("new")
+         self.mbox = mailbox.Maildir(test_support.TESTFN)
+         self.assert_(len(self.mbox.boxes) == 1)
+         self.assert_(self.mbox.next() is not None)
+         self.assert_(self.mbox.next() is None)
+         self.assert_(self.mbox.next() is None)
+ 
+     def test_nonempty_maildir_both(self):
+         self.createMessage("cur")
+         self.createMessage("new")
+         self.mbox = mailbox.Maildir(test_support.TESTFN)
+         self.assert_(len(self.mbox.boxes) == 2)
+         self.assert_(self.mbox.next() is not None)
+         self.assert_(self.mbox.next() is not None)
+         self.assert_(self.mbox.next() is None)
+         self.assert_(self.mbox.next() is None)
+ 
      # XXX We still need more tests!
+ 
  
! test_support.run_unittest(MaildirTestCase)