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.
This commit is contained in:
parent
39d345127e
commit
c02bc3e819
|
@ -1,2 +1 @@
|
|||
test_mailbox
|
||||
newly created maildir contains 0 messages
|
||||
|
|
|
@ -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)
|
||||
|
|
Loading…
Reference in New Issue