blob: 98584593cf4c437c70461ae93f90beb63199b587 [file] [log] [blame]
Fred Drake0aaed272000-10-23 13:39:15 +00001import mailbox
2import os
3import test_support
Fred Drakec02bc3e2001-05-21 20:23:21 +00004import time
5import unittest
Fred Drake0aaed272000-10-23 13:39:15 +00006
Fred Drakec02bc3e2001-05-21 20:23:21 +00007# cleanup earlier tests
Guido van Rossum75ebb292001-04-10 15:01:20 +00008try:
9 os.unlink(test_support.TESTFN)
10except os.error:
11 pass
12
Fred Drake0aaed272000-10-23 13:39:15 +000013
Fred Drakec02bc3e2001-05-21 20:23:21 +000014DUMMY_MESSAGE = """\
15From: some.body@dummy.domain
16To: me@my.domain
17
18This is a dummy message.
19"""
20
21
22class MaildirTestCase(unittest.TestCase):
23
24 def setUp(self):
25 # create a new maildir mailbox to work with:
26 self._dir = test_support.TESTFN
27 os.mkdir(self._dir)
28 os.mkdir(os.path.join(self._dir, "cur"))
29 os.mkdir(os.path.join(self._dir, "tmp"))
30 os.mkdir(os.path.join(self._dir, "new"))
31 self._counter = 1
32 self._msgfiles = []
33
34 def tearDown(self):
35 map(os.unlink, self._msgfiles)
36 os.rmdir(os.path.join(self._dir, "cur"))
37 os.rmdir(os.path.join(self._dir, "tmp"))
38 os.rmdir(os.path.join(self._dir, "new"))
39 os.rmdir(self._dir)
40
41 def createMessage(self, dir):
42 t = int(time.time())
43 pid = self._counter
44 self._counter += 1
45 filename = "%s.%s.myhostname.mydomain" % (t, pid)
46 tmpname = os.path.join(self._dir, "tmp", filename)
47 newname = os.path.join(self._dir, dir, filename)
48 fp = open(tmpname, "w")
49 self._msgfiles.append(tmpname)
50 fp.write(DUMMY_MESSAGE)
51 fp.close()
52 os.link(tmpname, newname)
53 self._msgfiles.append(newname)
54
55 def test_empty_maildir(self):
56 """Test an empty maildir mailbox"""
57 # Test for regression on bug #117490:
58 # Make sure the boxes attribute actually gets set.
59 self.mbox = mailbox.Maildir(test_support.TESTFN)
60 self.assert_(hasattr(self.mbox, "boxes"))
61 self.assert_(len(self.mbox.boxes) == 0)
62 self.assert_(self.mbox.next() is None)
63 self.assert_(self.mbox.next() is None)
64
65 def test_nonempty_maildir_cur(self):
66 self.createMessage("cur")
67 self.mbox = mailbox.Maildir(test_support.TESTFN)
68 self.assert_(len(self.mbox.boxes) == 1)
69 self.assert_(self.mbox.next() is not None)
70 self.assert_(self.mbox.next() is None)
71 self.assert_(self.mbox.next() is None)
72
73 def test_nonempty_maildir_new(self):
74 self.createMessage("new")
75 self.mbox = mailbox.Maildir(test_support.TESTFN)
76 self.assert_(len(self.mbox.boxes) == 1)
77 self.assert_(self.mbox.next() is not None)
78 self.assert_(self.mbox.next() is None)
79 self.assert_(self.mbox.next() is None)
80
81 def test_nonempty_maildir_both(self):
82 self.createMessage("cur")
83 self.createMessage("new")
84 self.mbox = mailbox.Maildir(test_support.TESTFN)
85 self.assert_(len(self.mbox.boxes) == 2)
86 self.assert_(self.mbox.next() is not None)
87 self.assert_(self.mbox.next() is not None)
88 self.assert_(self.mbox.next() is None)
89 self.assert_(self.mbox.next() is None)
Fred Drake0aaed272000-10-23 13:39:15 +000090
91 # XXX We still need more tests!
92
Fred Drakec02bc3e2001-05-21 20:23:21 +000093
94test_support.run_unittest(MaildirTestCase)