Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / lib / python / lib / python2.4 / test / test_mailbox.py
CommitLineData
86530b38
AT
1import mailbox
2import os
3import time
4import unittest
5from test import test_support
6
7# cleanup earlier tests
8try:
9 os.unlink(test_support.TESTFN)
10except os.error:
11 pass
12
13FROM_ = "From some.body@dummy.domain Sat Jul 24 13:43:35 2004\n"
14DUMMY_MESSAGE = """\
15From: some.body@dummy.domain
16To: me@my.domain
17Subject: Simple Test
18
19This is a dummy message.
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, mbox=False):
42 t = int(time.time() % 1000000)
43 pid = self._counter
44 self._counter += 1
45 filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
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 if mbox:
51 fp.write(FROM_)
52 fp.write(DUMMY_MESSAGE)
53 fp.close()
54 if hasattr(os, "link"):
55 os.link(tmpname, newname)
56 else:
57 fp = open(newname, "w")
58 fp.write(DUMMY_MESSAGE)
59 fp.close()
60 self._msgfiles.append(newname)
61 return tmpname
62
63 def test_empty_maildir(self):
64 """Test an empty maildir mailbox"""
65 # Test for regression on bug #117490:
66 # Make sure the boxes attribute actually gets set.
67 self.mbox = mailbox.Maildir(test_support.TESTFN)
68 self.assert_(hasattr(self.mbox, "boxes"))
69 self.assert_(len(self.mbox.boxes) == 0)
70 self.assert_(self.mbox.next() is None)
71 self.assert_(self.mbox.next() is None)
72
73 def test_nonempty_maildir_cur(self):
74 self.createMessage("cur")
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_new(self):
82 self.createMessage("new")
83 self.mbox = mailbox.Maildir(test_support.TESTFN)
84 self.assert_(len(self.mbox.boxes) == 1)
85 self.assert_(self.mbox.next() is not None)
86 self.assert_(self.mbox.next() is None)
87 self.assert_(self.mbox.next() is None)
88
89 def test_nonempty_maildir_both(self):
90 self.createMessage("cur")
91 self.createMessage("new")
92 self.mbox = mailbox.Maildir(test_support.TESTFN)
93 self.assert_(len(self.mbox.boxes) == 2)
94 self.assert_(self.mbox.next() is not None)
95 self.assert_(self.mbox.next() is not None)
96 self.assert_(self.mbox.next() is None)
97 self.assert_(self.mbox.next() is None)
98
99 def test_unix_mbox(self):
100 ### should be better!
101 import email.Parser
102 fname = self.createMessage("cur", True)
103 n = 0
104 for msg in mailbox.PortableUnixMailbox(open(fname),
105 email.Parser.Parser().parse):
106 n += 1
107 self.assertEqual(msg["subject"], "Simple Test")
108 self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
109 self.assertEqual(n, 1)
110
111 # XXX We still need more tests!
112
113
114def test_main():
115 test_support.run_unittest(MaildirTestCase)
116
117
118if __name__ == "__main__":
119 test_main()