From c02bc3e81900cf46adb897e76d61f3983607d83d Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Mon, 21 May 2001 20:23:21 +0000 Subject: [PATCH] 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. --- Lib/test/output/test_mailbox | 1 - Lib/test/test_mailbox.py | 102 +++++++++++++++++++++++++++-------- 2 files changed, 81 insertions(+), 22 deletions(-) diff --git a/Lib/test/output/test_mailbox b/Lib/test/output/test_mailbox index eada229788c..7b0e6be9017 100644 --- a/Lib/test/output/test_mailbox +++ b/Lib/test/output/test_mailbox @@ -1,2 +1 @@ test_mailbox -newly created maildir contains 0 messages diff --git a/Lib/test/test_mailbox.py b/Lib/test/test_mailbox.py index 1d1a0637205..98584593cf4 100644 --- a/Lib/test/test_mailbox.py +++ b/Lib/test/test_mailbox.py @@ -1,34 +1,94 @@ import mailbox import os import test_support +import time +import unittest -# cleanup +# cleanup earlier tests try: os.unlink(test_support.TESTFN) except os.error: 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" +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! -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 + +test_support.run_unittest(MaildirTestCase)