]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.2/Lib/test/test_old_mailbox.py
AppPkg/Applications/Python: Add Python 2.7.2 sources since the release of Python...
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.2 / Lib / test / test_old_mailbox.py
1 # This set of tests exercises the backward-compatibility class
2 # in mailbox.py (the ones without write support).
3
4 import mailbox
5 import os
6 import time
7 import unittest
8 from test import test_support
9
10 # cleanup earlier tests
11 try:
12 os.unlink(test_support.TESTFN)
13 except os.error:
14 pass
15
16 FROM_ = "From some.body@dummy.domain Sat Jul 24 13:43:35 2004\n"
17 DUMMY_MESSAGE = """\
18 From: some.body@dummy.domain
19 To: me@my.domain
20 Subject: Simple Test
21
22 This is a dummy message.
23 """
24
25 class MaildirTestCase(unittest.TestCase):
26
27 def setUp(self):
28 # create a new maildir mailbox to work with:
29 self._dir = test_support.TESTFN
30 os.mkdir(self._dir)
31 os.mkdir(os.path.join(self._dir, "cur"))
32 os.mkdir(os.path.join(self._dir, "tmp"))
33 os.mkdir(os.path.join(self._dir, "new"))
34 self._counter = 1
35 self._msgfiles = []
36
37 def tearDown(self):
38 map(os.unlink, self._msgfiles)
39 os.rmdir(os.path.join(self._dir, "cur"))
40 os.rmdir(os.path.join(self._dir, "tmp"))
41 os.rmdir(os.path.join(self._dir, "new"))
42 os.rmdir(self._dir)
43
44 def createMessage(self, dir, mbox=False):
45 t = int(time.time() % 1000000)
46 pid = self._counter
47 self._counter += 1
48 filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
49 tmpname = os.path.join(self._dir, "tmp", filename)
50 newname = os.path.join(self._dir, dir, filename)
51 with open(tmpname, "w") as fp:
52 self._msgfiles.append(tmpname)
53 if mbox:
54 fp.write(FROM_)
55 fp.write(DUMMY_MESSAGE)
56 if hasattr(os, "link"):
57 os.link(tmpname, newname)
58 else:
59 with open(newname, "w") as fp:
60 fp.write(DUMMY_MESSAGE)
61 self._msgfiles.append(newname)
62 return tmpname
63
64 def test_empty_maildir(self):
65 """Test an empty maildir mailbox"""
66 # Test for regression on bug #117490:
67 self.mbox = mailbox.Maildir(test_support.TESTFN)
68 self.assertTrue(len(self.mbox) == 0)
69 self.assertTrue(self.mbox.next() is None)
70 self.assertTrue(self.mbox.next() is None)
71
72 def test_nonempty_maildir_cur(self):
73 self.createMessage("cur")
74 self.mbox = mailbox.Maildir(test_support.TESTFN)
75 self.assertTrue(len(self.mbox) == 1)
76 self.assertTrue(self.mbox.next() is not None)
77 self.assertTrue(self.mbox.next() is None)
78 self.assertTrue(self.mbox.next() is None)
79
80 def test_nonempty_maildir_new(self):
81 self.createMessage("new")
82 self.mbox = mailbox.Maildir(test_support.TESTFN)
83 self.assertTrue(len(self.mbox) == 1)
84 self.assertTrue(self.mbox.next() is not None)
85 self.assertTrue(self.mbox.next() is None)
86 self.assertTrue(self.mbox.next() is None)
87
88 def test_nonempty_maildir_both(self):
89 self.createMessage("cur")
90 self.createMessage("new")
91 self.mbox = mailbox.Maildir(test_support.TESTFN)
92 self.assertTrue(len(self.mbox) == 2)
93 self.assertTrue(self.mbox.next() is not None)
94 self.assertTrue(self.mbox.next() is not None)
95 self.assertTrue(self.mbox.next() is None)
96 self.assertTrue(self.mbox.next() is None)
97
98 def test_unix_mbox(self):
99 ### should be better!
100 import email.parser
101 fname = self.createMessage("cur", True)
102 n = 0
103 with open(fname) as f:
104 for msg in mailbox.PortableUnixMailbox(f,
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 class MboxTestCase(unittest.TestCase):
112 def setUp(self):
113 # create a new maildir mailbox to work with:
114 self._path = test_support.TESTFN
115
116 def tearDown(self):
117 os.unlink(self._path)
118
119 def test_from_regex (self):
120 # Testing new regex from bug #1633678
121 with open(self._path, 'w') as f:
122 f.write("""From fred@example.com Mon May 31 13:24:50 2004 +0200
123 Subject: message 1
124
125 body1
126 From fred@example.com Mon May 31 13:24:50 2004 -0200
127 Subject: message 2
128
129 body2
130 From fred@example.com Mon May 31 13:24:50 2004
131 Subject: message 3
132
133 body3
134 From fred@example.com Mon May 31 13:24:50 2004
135 Subject: message 4
136
137 body4
138 """)
139 with open(self._path, 'r') as f:
140 box = mailbox.UnixMailbox(f)
141 self.assertTrue(len(list(iter(box))) == 4)
142
143
144 # XXX We still need more tests!
145
146
147 def test_main():
148 test_support.run_unittest(MaildirTestCase, MboxTestCase)
149
150
151 if __name__ == "__main__":
152 test_main()