annotate Lib/test/test_mailbox.py @ 54294:dba767bc3155 legacy-trunk

remove mention of old ctypes version
author Benjamin Peterson <benjamin@python.org>
date Sat, 23 May 2009 20:59:09 +0000
parents e0cede7f521b
children 6768b2350c57
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15298
85a509faccc7 Added test for regression on SourceForge bug #117490.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
1 import os
39436
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
2 import sys
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
3 import time
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
4 import stat
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
5 import socket
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
6 import email
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
7 import email.message
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
8 import rfc822
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
9 import re
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
10 import StringIO
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
11 from test import test_support
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
12 import unittest
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
13 import mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
14 import glob
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
15 try:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
16 import fcntl
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
17 except ImportError:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
18 pass
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
19
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
20
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
21 class TestBase(unittest.TestCase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
22
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
23 def _check_sample(self, msg):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
24 # Inspect a mailbox.Message representation of the sample message
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
25 self.assert_(isinstance(msg, email.message.Message))
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
26 self.assert_(isinstance(msg, mailbox.Message))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
27 for key, value in _sample_headers.iteritems():
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
28 self.assert_(value in msg.get_all(key))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
29 self.assert_(msg.is_multipart())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
30 self.assert_(len(msg.get_payload()) == len(_sample_payloads))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
31 for i, payload in enumerate(_sample_payloads):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
32 part = msg.get_payload(i)
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
33 self.assert_(isinstance(part, email.message.Message))
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
34 self.assert_(not isinstance(part, mailbox.Message))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
35 self.assert_(part.get_payload() == payload)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
36
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
37 def _delete_recursively(self, target):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
38 # Delete a file or delete a directory recursively
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
39 if os.path.isdir(target):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
40 for path, dirs, files in os.walk(target, topdown=False):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
41 for name in files:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
42 os.remove(os.path.join(path, name))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
43 for name in dirs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
44 os.rmdir(os.path.join(path, name))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
45 os.rmdir(target)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
46 elif os.path.exists(target):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
47 os.remove(target)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
48
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
49
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
50 class TestMailbox(TestBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
51
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
52 _factory = None # Overridden by subclasses to reuse tests
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
53 _template = 'From: foo\n\n%s'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
54
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
55 def setUp(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
56 self._path = test_support.TESTFN
41244
5a771b4a8b78 Try to make this test more resistant to dropping from previous runs (ie, files that may exist but cause the test to fail). Should be backported (assuming it works :-)
Neal Norwitz <nnorwitz@gmail.com>
parents: 40732
diff changeset
57 self._delete_recursively(self._path)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
58 self._box = self._factory(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
59
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
60 def tearDown(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
61 self._box.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
62 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
63
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
64 def test_add(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
65 # Add copies of a sample message
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
66 keys = []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
67 keys.append(self._box.add(self._template % 0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
68 self.assert_(len(self._box) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
69 keys.append(self._box.add(mailbox.Message(_sample_message)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
70 self.assert_(len(self._box) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
71 keys.append(self._box.add(email.message_from_string(_sample_message)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
72 self.assert_(len(self._box) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
73 keys.append(self._box.add(StringIO.StringIO(_sample_message)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
74 self.assert_(len(self._box) == 4)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
75 keys.append(self._box.add(_sample_message))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
76 self.assert_(len(self._box) == 5)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
77 self.assert_(self._box.get_string(keys[0]) == self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
78 for i in (1, 2, 3, 4):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
79 self._check_sample(self._box[keys[i]])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
80
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
81 def test_remove(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
82 # Remove messages using remove()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
83 self._test_remove_or_delitem(self._box.remove)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
84
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
85 def test_delitem(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
86 # Remove messages using __delitem__()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
87 self._test_remove_or_delitem(self._box.__delitem__)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
88
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
89 def _test_remove_or_delitem(self, method):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
90 # (Used by test_remove() and test_delitem().)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
91 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
92 key1 = self._box.add(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
93 self.assert_(len(self._box) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
94 method(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
95 l = len(self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
96 self.assert_(l == 1, "actual l: %s" % l)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
97 self.assertRaises(KeyError, lambda: self._box[key0])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
98 self.assertRaises(KeyError, lambda: method(key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
99 self.assert_(self._box.get_string(key1) == self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
100 key2 = self._box.add(self._template % 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
101 self.assert_(len(self._box) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
102 method(key2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
103 l = len(self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
104 self.assert_(l == 1, "actual l: %s" % l)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
105 self.assertRaises(KeyError, lambda: self._box[key2])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
106 self.assertRaises(KeyError, lambda: method(key2))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
107 self.assert_(self._box.get_string(key1) == self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
108 method(key1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
109 self.assert_(len(self._box) == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
110 self.assertRaises(KeyError, lambda: self._box[key1])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
111 self.assertRaises(KeyError, lambda: method(key1))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
112
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
113 def test_discard(self, repetitions=10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
114 # Discard messages
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
115 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
116 key1 = self._box.add(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
117 self.assert_(len(self._box) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
118 self._box.discard(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
119 self.assert_(len(self._box) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
120 self.assertRaises(KeyError, lambda: self._box[key0])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
121 self._box.discard(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
122 self.assert_(len(self._box) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
123 self.assertRaises(KeyError, lambda: self._box[key0])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
124
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
125 def test_get(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
126 # Retrieve messages using get()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
127 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
128 msg = self._box.get(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
129 self.assert_(msg['from'] == 'foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
130 self.assert_(msg.get_payload() == '0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
131 self.assert_(self._box.get('foo') is None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
132 self.assert_(self._box.get('foo', False) is False)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
133 self._box.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
134 self._box = self._factory(self._path, factory=rfc822.Message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
135 key1 = self._box.add(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
136 msg = self._box.get(key1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
137 self.assert_(msg['from'] == 'foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
138 self.assert_(msg.fp.read() == '1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
139
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
140 def test_getitem(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
141 # Retrieve message using __getitem__()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
142 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
143 msg = self._box[key0]
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
144 self.assert_(msg['from'] == 'foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
145 self.assert_(msg.get_payload() == '0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
146 self.assertRaises(KeyError, lambda: self._box['foo'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
147 self._box.discard(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
148 self.assertRaises(KeyError, lambda: self._box[key0])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
149
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
150 def test_get_message(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
151 # Get Message representations of messages
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
152 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
153 key1 = self._box.add(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
154 msg0 = self._box.get_message(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
155 self.assert_(isinstance(msg0, mailbox.Message))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
156 self.assert_(msg0['from'] == 'foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
157 self.assert_(msg0.get_payload() == '0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
158 self._check_sample(self._box.get_message(key1))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
159
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
160 def test_get_string(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
161 # Get string representations of messages
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
162 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
163 key1 = self._box.add(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
164 self.assert_(self._box.get_string(key0) == self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
165 self.assert_(self._box.get_string(key1) == _sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
166
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
167 def test_get_file(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
168 # Get file representations of messages
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
169 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
170 key1 = self._box.add(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
171 self.assert_(self._box.get_file(key0).read().replace(os.linesep, '\n')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
172 == self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
173 self.assert_(self._box.get_file(key1).read().replace(os.linesep, '\n')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
174 == _sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
175
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
176 def test_iterkeys(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
177 # Get keys using iterkeys()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
178 self._check_iteration(self._box.iterkeys, do_keys=True, do_values=False)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
179
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
180 def test_keys(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
181 # Get keys using keys()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
182 self._check_iteration(self._box.keys, do_keys=True, do_values=False)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
183
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
184 def test_itervalues(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
185 # Get values using itervalues()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
186 self._check_iteration(self._box.itervalues, do_keys=False,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
187 do_values=True)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
188
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
189 def test_iter(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
190 # Get values using __iter__()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
191 self._check_iteration(self._box.__iter__, do_keys=False,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
192 do_values=True)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
193
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
194 def test_values(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
195 # Get values using values()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
196 self._check_iteration(self._box.values, do_keys=False, do_values=True)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
197
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
198 def test_iteritems(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
199 # Get keys and values using iteritems()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
200 self._check_iteration(self._box.iteritems, do_keys=True,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
201 do_values=True)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
202
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
203 def test_items(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
204 # Get keys and values using items()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
205 self._check_iteration(self._box.items, do_keys=True, do_values=True)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
206
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
207 def _check_iteration(self, method, do_keys, do_values, repetitions=10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
208 for value in method():
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
209 self.fail("Not empty")
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
210 keys, values = [], []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
211 for i in xrange(repetitions):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
212 keys.append(self._box.add(self._template % i))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
213 values.append(self._template % i)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
214 if do_keys and not do_values:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
215 returned_keys = list(method())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
216 elif do_values and not do_keys:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
217 returned_values = list(method())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
218 else:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
219 returned_keys, returned_values = [], []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
220 for key, value in method():
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
221 returned_keys.append(key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
222 returned_values.append(value)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
223 if do_keys:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
224 self.assert_(len(keys) == len(returned_keys))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
225 self.assert_(set(keys) == set(returned_keys))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
226 if do_values:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
227 count = 0
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
228 for value in returned_values:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
229 self.assert_(value['from'] == 'foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
230 self.assert_(int(value.get_payload()) < repetitions)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
231 count += 1
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
232 self.assert_(len(values) == count)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
233
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
234 def test_has_key(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
235 # Check existence of keys using has_key()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
236 self._test_has_key_or_contains(self._box.has_key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
237
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
238 def test_contains(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
239 # Check existence of keys using __contains__()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
240 self._test_has_key_or_contains(self._box.__contains__)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
241
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
242 def _test_has_key_or_contains(self, method):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
243 # (Used by test_has_key() and test_contains().)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
244 self.assert_(not method('foo'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
245 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
246 self.assert_(method(key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
247 self.assert_(not method('foo'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
248 key1 = self._box.add(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
249 self.assert_(method(key1))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
250 self.assert_(method(key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
251 self.assert_(not method('foo'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
252 self._box.remove(key0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
253 self.assert_(not method(key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
254 self.assert_(method(key1))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
255 self.assert_(not method('foo'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
256 self._box.remove(key1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
257 self.assert_(not method(key1))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
258 self.assert_(not method(key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
259 self.assert_(not method('foo'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
260
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
261 def test_len(self, repetitions=10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
262 # Get message count
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
263 keys = []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
264 for i in xrange(repetitions):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
265 self.assert_(len(self._box) == i)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
266 keys.append(self._box.add(self._template % i))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
267 self.assert_(len(self._box) == i + 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
268 for i in xrange(repetitions):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
269 self.assert_(len(self._box) == repetitions - i)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
270 self._box.remove(keys[i])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
271 self.assert_(len(self._box) == repetitions - i - 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
272
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
273 def test_set_item(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
274 # Modify messages using __setitem__()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
275 key0 = self._box.add(self._template % 'original 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
276 self.assert_(self._box.get_string(key0) == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
277 self._template % 'original 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
278 key1 = self._box.add(self._template % 'original 1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
279 self.assert_(self._box.get_string(key1) == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
280 self._template % 'original 1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
281 self._box[key0] = self._template % 'changed 0'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
282 self.assert_(self._box.get_string(key0) == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
283 self._template % 'changed 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
284 self._box[key1] = self._template % 'changed 1'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
285 self.assert_(self._box.get_string(key1) == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
286 self._template % 'changed 1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
287 self._box[key0] = _sample_message
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
288 self._check_sample(self._box[key0])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
289 self._box[key1] = self._box[key0]
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
290 self._check_sample(self._box[key1])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
291 self._box[key0] = self._template % 'original 0'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
292 self.assert_(self._box.get_string(key0) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
293 self._template % 'original 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
294 self._check_sample(self._box[key1])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
295 self.assertRaises(KeyError,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
296 lambda: self._box.__setitem__('foo', 'bar'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
297 self.assertRaises(KeyError, lambda: self._box['foo'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
298 self.assert_(len(self._box) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
299
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
300 def test_clear(self, iterations=10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
301 # Remove all messages using clear()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
302 keys = []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
303 for i in xrange(iterations):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
304 self._box.add(self._template % i)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
305 for i, key in enumerate(keys):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
306 self.assert_(self._box.get_string(key) == self._template % i)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
307 self._box.clear()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
308 self.assert_(len(self._box) == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
309 for i, key in enumerate(keys):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
310 self.assertRaises(KeyError, lambda: self._box.get_string(key))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
311
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
312 def test_pop(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
313 # Get and remove a message using pop()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
314 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
315 self.assert_(key0 in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
316 key1 = self._box.add(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
317 self.assert_(key1 in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
318 self.assert_(self._box.pop(key0).get_payload() == '0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
319 self.assert_(key0 not in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
320 self.assert_(key1 in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
321 key2 = self._box.add(self._template % 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
322 self.assert_(key2 in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
323 self.assert_(self._box.pop(key2).get_payload() == '2')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
324 self.assert_(key2 not in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
325 self.assert_(key1 in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
326 self.assert_(self._box.pop(key1).get_payload() == '1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
327 self.assert_(key1 not in self._box)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
328 self.assert_(len(self._box) == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
329
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
330 def test_popitem(self, iterations=10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
331 # Get and remove an arbitrary (key, message) using popitem()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
332 keys = []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
333 for i in xrange(10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
334 keys.append(self._box.add(self._template % i))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
335 seen = []
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
336 for i in xrange(10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
337 key, msg = self._box.popitem()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
338 self.assert_(key in keys)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
339 self.assert_(key not in seen)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
340 seen.append(key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
341 self.assert_(int(msg.get_payload()) == keys.index(key))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
342 self.assert_(len(self._box) == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
343 for key in keys:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
344 self.assertRaises(KeyError, lambda: self._box[key])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
345
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
346 def test_update(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
347 # Modify multiple messages using update()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
348 key0 = self._box.add(self._template % 'original 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
349 key1 = self._box.add(self._template % 'original 1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
350 key2 = self._box.add(self._template % 'original 2')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
351 self._box.update({key0: self._template % 'changed 0',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
352 key2: _sample_message})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
353 self.assert_(len(self._box) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
354 self.assert_(self._box.get_string(key0) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
355 self._template % 'changed 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
356 self.assert_(self._box.get_string(key1) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
357 self._template % 'original 1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
358 self._check_sample(self._box[key2])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
359 self._box.update([(key2, self._template % 'changed 2'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
360 (key1, self._template % 'changed 1'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
361 (key0, self._template % 'original 0')])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
362 self.assert_(len(self._box) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
363 self.assert_(self._box.get_string(key0) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
364 self._template % 'original 0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
365 self.assert_(self._box.get_string(key1) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
366 self._template % 'changed 1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
367 self.assert_(self._box.get_string(key2) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
368 self._template % 'changed 2')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
369 self.assertRaises(KeyError,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
370 lambda: self._box.update({'foo': 'bar',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
371 key0: self._template % "changed 0"}))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
372 self.assert_(len(self._box) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
373 self.assert_(self._box.get_string(key0) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
374 self._template % "changed 0")
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
375 self.assert_(self._box.get_string(key1) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
376 self._template % "changed 1")
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
377 self.assert_(self._box.get_string(key2) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
378 self._template % "changed 2")
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
379
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
380 def test_flush(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
381 # Write changes to disk
46099
8f6ccd075a24 Ensure that the mailbox is closed to prevent problems on Windows with removing
Neal Norwitz <nnorwitz@gmail.com>
parents: 45140
diff changeset
382 self._test_flush_or_close(self._box.flush, True)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
383
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
384 def test_lock_unlock(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
385 # Lock and unlock the mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
386 self.assert_(not os.path.exists(self._get_lock_path()))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
387 self._box.lock()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
388 self.assert_(os.path.exists(self._get_lock_path()))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
389 self._box.unlock()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
390 self.assert_(not os.path.exists(self._get_lock_path()))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
391
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
392 def test_close(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
393 # Close mailbox and flush changes to disk
46099
8f6ccd075a24 Ensure that the mailbox is closed to prevent problems on Windows with removing
Neal Norwitz <nnorwitz@gmail.com>
parents: 45140
diff changeset
394 self._test_flush_or_close(self._box.close, False)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
395
46099
8f6ccd075a24 Ensure that the mailbox is closed to prevent problems on Windows with removing
Neal Norwitz <nnorwitz@gmail.com>
parents: 45140
diff changeset
396 def _test_flush_or_close(self, method, should_call_close):
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
397 contents = [self._template % i for i in xrange(3)]
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
398 self._box.add(contents[0])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
399 self._box.add(contents[1])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
400 self._box.add(contents[2])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
401 method()
46099
8f6ccd075a24 Ensure that the mailbox is closed to prevent problems on Windows with removing
Neal Norwitz <nnorwitz@gmail.com>
parents: 45140
diff changeset
402 if should_call_close:
8f6ccd075a24 Ensure that the mailbox is closed to prevent problems on Windows with removing
Neal Norwitz <nnorwitz@gmail.com>
parents: 45140
diff changeset
403 self._box.close()
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
404 self._box = self._factory(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
405 keys = self._box.keys()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
406 self.assert_(len(keys) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
407 for key in keys:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
408 self.assert_(self._box.get_string(key) in contents)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
409
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
410 def test_dump_message(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
411 # Write message representations to disk
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
412 for input in (email.message_from_string(_sample_message),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
413 _sample_message, StringIO.StringIO(_sample_message)):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
414 output = StringIO.StringIO()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
415 self._box._dump_message(input, output)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
416 self.assert_(output.getvalue() ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
417 _sample_message.replace('\n', os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
418 output = StringIO.StringIO()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
419 self.assertRaises(TypeError,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
420 lambda: self._box._dump_message(None, output))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
421
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
422 def _get_lock_path(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
423 # Return the path of the dot lock file. May be overridden.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
424 return self._path + '.lock'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
425
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
426
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
427 class TestMailboxSuperclass(TestBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
428
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
429 def test_notimplemented(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
430 # Test that all Mailbox methods raise NotImplementedException.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
431 box = mailbox.Mailbox('path')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
432 self.assertRaises(NotImplementedError, lambda: box.add(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
433 self.assertRaises(NotImplementedError, lambda: box.remove(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
434 self.assertRaises(NotImplementedError, lambda: box.__delitem__(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
435 self.assertRaises(NotImplementedError, lambda: box.discard(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
436 self.assertRaises(NotImplementedError, lambda: box.__setitem__('', ''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
437 self.assertRaises(NotImplementedError, lambda: box.iterkeys())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
438 self.assertRaises(NotImplementedError, lambda: box.keys())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
439 self.assertRaises(NotImplementedError, lambda: box.itervalues().next())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
440 self.assertRaises(NotImplementedError, lambda: box.__iter__().next())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
441 self.assertRaises(NotImplementedError, lambda: box.values())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
442 self.assertRaises(NotImplementedError, lambda: box.iteritems().next())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
443 self.assertRaises(NotImplementedError, lambda: box.items())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
444 self.assertRaises(NotImplementedError, lambda: box.get(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
445 self.assertRaises(NotImplementedError, lambda: box.__getitem__(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
446 self.assertRaises(NotImplementedError, lambda: box.get_message(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
447 self.assertRaises(NotImplementedError, lambda: box.get_string(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
448 self.assertRaises(NotImplementedError, lambda: box.get_file(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
449 self.assertRaises(NotImplementedError, lambda: box.has_key(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
450 self.assertRaises(NotImplementedError, lambda: box.__contains__(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
451 self.assertRaises(NotImplementedError, lambda: box.__len__())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
452 self.assertRaises(NotImplementedError, lambda: box.clear())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
453 self.assertRaises(NotImplementedError, lambda: box.pop(''))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
454 self.assertRaises(NotImplementedError, lambda: box.popitem())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
455 self.assertRaises(NotImplementedError, lambda: box.update((('', ''),)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
456 self.assertRaises(NotImplementedError, lambda: box.flush())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
457 self.assertRaises(NotImplementedError, lambda: box.lock())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
458 self.assertRaises(NotImplementedError, lambda: box.unlock())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
459 self.assertRaises(NotImplementedError, lambda: box.close())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
460
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
461
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
462 class TestMaildir(TestMailbox):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
463
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
464 _factory = lambda self, path, factory=None: mailbox.Maildir(path, factory)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
465
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
466 def setUp(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
467 TestMailbox.setUp(self)
39436
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
468 if os.name in ('nt', 'os2') or sys.platform == 'cygwin':
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
469 self._box.colon = '!'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
470
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
471 def test_add_MM(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
472 # Add a MaildirMessage instance
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
473 msg = mailbox.MaildirMessage(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
474 msg.set_subdir('cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
475 msg.set_info('foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
476 key = self._box.add(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
477 self.assert_(os.path.exists(os.path.join(self._path, 'cur', '%s%sfoo' %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
478 (key, self._box.colon))))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
479
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
480 def test_get_MM(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
481 # Get a MaildirMessage instance
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
482 msg = mailbox.MaildirMessage(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
483 msg.set_subdir('cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
484 msg.set_flags('RF')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
485 key = self._box.add(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
486 msg_returned = self._box.get_message(key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
487 self.assert_(isinstance(msg_returned, mailbox.MaildirMessage))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
488 self.assert_(msg_returned.get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
489 self.assert_(msg_returned.get_flags() == 'FR')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
490
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
491 def test_set_MM(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
492 # Set with a MaildirMessage instance
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
493 msg0 = mailbox.MaildirMessage(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
494 msg0.set_flags('TP')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
495 key = self._box.add(msg0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
496 msg_returned = self._box.get_message(key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
497 self.assert_(msg_returned.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
498 self.assert_(msg_returned.get_flags() == 'PT')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
499 msg1 = mailbox.MaildirMessage(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
500 self._box[key] = msg1
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
501 msg_returned = self._box.get_message(key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
502 self.assert_(msg_returned.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
503 self.assert_(msg_returned.get_flags() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
504 self.assert_(msg_returned.get_payload() == '1')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
505 msg2 = mailbox.MaildirMessage(self._template % 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
506 msg2.set_info('2,S')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
507 self._box[key] = msg2
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
508 self._box[key] = self._template % 3
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
509 msg_returned = self._box.get_message(key)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
510 self.assert_(msg_returned.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
511 self.assert_(msg_returned.get_flags() == 'S')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
512 self.assert_(msg_returned.get_payload() == '3')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
513
44783
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
514 def test_consistent_factory(self):
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
515 # Add a message.
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
516 msg = mailbox.MaildirMessage(self._template % 0)
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
517 msg.set_subdir('cur')
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
518 msg.set_flags('RF')
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
519 key = self._box.add(msg)
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
520
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
521 # Create new mailbox with
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
522 class FakeMessage(mailbox.MaildirMessage):
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
523 pass
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
524 box = mailbox.Maildir(self._path, factory=FakeMessage)
45140
a3fe7485f5c5 Correct test_mailbox on win32: since the test sets a custom 'colon' attribute
Amaury Forgeot d'Arc <amauryfa@gmail.com>
parents: 44783
diff changeset
525 box.colon = self._box.colon
44783
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
526 msg2 = box.get_message(key)
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
527 self.assert_(isinstance(msg2, FakeMessage))
4a7afff52ea7 Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.
Andrew M. Kuchling <amk@amk.ca>
parents: 42280
diff changeset
528
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
529 def test_initialize_new(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
530 # Initialize a non-existent mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
531 self.tearDown()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
532 self._box = mailbox.Maildir(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
533 self._check_basics(factory=rfc822.Message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
534 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
535 self._box = self._factory(self._path, factory=None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
536 self._check_basics()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
537
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
538 def test_initialize_existing(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
539 # Initialize an existing mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
540 self.tearDown()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
541 for subdir in '', 'tmp', 'new', 'cur':
39151
b58f7952e38a Get mailbox module working on OS/2 EMX port.
Andrew MacIntyre <andymac@bullseye.apana.org.au>
parents: 38961
diff changeset
542 os.mkdir(os.path.normpath(os.path.join(self._path, subdir)))
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
543 self._box = mailbox.Maildir(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
544 self._check_basics(factory=rfc822.Message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
545 self._box = mailbox.Maildir(self._path, factory=None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
546 self._check_basics()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
547
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
548 def _check_basics(self, factory=None):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
549 # (Used by test_open_new() and test_open_existing().)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
550 self.assertEqual(self._box._path, os.path.abspath(self._path))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
551 self.assertEqual(self._box._factory, factory)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
552 for subdir in '', 'tmp', 'new', 'cur':
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
553 path = os.path.join(self._path, subdir)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
554 mode = os.stat(path)[stat.ST_MODE]
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
555 self.assert_(stat.S_ISDIR(mode), "Not a directory: '%s'" % path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
556
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
557 def test_list_folders(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
558 # List folders
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
559 self._box.add_folder('one')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
560 self._box.add_folder('two')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
561 self._box.add_folder('three')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
562 self.assert_(len(self._box.list_folders()) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
563 self.assert_(set(self._box.list_folders()) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
564 set(('one', 'two', 'three')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
565
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
566 def test_get_folder(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
567 # Open folders
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
568 self._box.add_folder('foo.bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
569 folder0 = self._box.get_folder('foo.bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
570 folder0.add(self._template % 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
571 self.assert_(os.path.isdir(os.path.join(self._path, '.foo.bar')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
572 folder1 = self._box.get_folder('foo.bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
573 self.assert_(folder1.get_string(folder1.keys()[0]) == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
574 self._template % 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
575
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
576 def test_add_and_remove_folders(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
577 # Delete folders
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
578 self._box.add_folder('one')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
579 self._box.add_folder('two')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
580 self.assert_(len(self._box.list_folders()) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
581 self.assert_(set(self._box.list_folders()) == set(('one', 'two')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
582 self._box.remove_folder('one')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
583 self.assert_(len(self._box.list_folders()) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
584 self.assert_(set(self._box.list_folders()) == set(('two',)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
585 self._box.add_folder('three')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
586 self.assert_(len(self._box.list_folders()) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
587 self.assert_(set(self._box.list_folders()) == set(('two', 'three')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
588 self._box.remove_folder('three')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
589 self.assert_(len(self._box.list_folders()) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
590 self.assert_(set(self._box.list_folders()) == set(('two',)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
591 self._box.remove_folder('two')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
592 self.assert_(len(self._box.list_folders()) == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
593 self.assert_(self._box.list_folders() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
594
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
595 def test_clean(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
596 # Remove old files from 'tmp'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
597 foo_path = os.path.join(self._path, 'tmp', 'foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
598 bar_path = os.path.join(self._path, 'tmp', 'bar')
38086
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
599 f = open(foo_path, 'w')
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
600 f.write("@")
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
601 f.close()
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
602 f = open(bar_path, 'w')
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
603 f.write("@")
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
604 f.close()
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
605 self._box.clean()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
606 self.assert_(os.path.exists(foo_path))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
607 self.assert_(os.path.exists(bar_path))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
608 foo_stat = os.stat(foo_path)
38086
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
609 os.utime(foo_path, (time.time() - 129600 - 2,
ac72900e1919 Hopefully this will fix the spurious failures of test_mailbox.py that I'm
Guido van Rossum <guido@python.org>
parents: 37917
diff changeset
610 foo_stat.st_mtime))
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
611 self._box.clean()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
612 self.assert_(not os.path.exists(foo_path))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
613 self.assert_(os.path.exists(bar_path))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
614
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
615 def test_create_tmp(self, repetitions=10):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
616 # Create files in tmp directory
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
617 hostname = socket.gethostname()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
618 if '/' in hostname:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
619 hostname = hostname.replace('/', r'\057')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
620 if ':' in hostname:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
621 hostname = hostname.replace(':', r'\072')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
622 pid = os.getpid()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
623 pattern = re.compile(r"(?P<time>\d+)\.M(?P<M>\d{1,6})P(?P<P>\d+)"
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
624 r"Q(?P<Q>\d+)\.(?P<host>[^:/]+)")
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
625 previous_groups = None
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
626 for x in xrange(repetitions):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
627 tmp_file = self._box._create_tmp()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
628 head, tail = os.path.split(tmp_file.name)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
629 self.assertEqual(head, os.path.abspath(os.path.join(self._path,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
630 "tmp")),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
631 "File in wrong location: '%s'" % head)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
632 match = pattern.match(tail)
46197
01a7e66525c2 #2503 make singletons compared with "is" not == or !=
Benjamin Peterson <benjamin@python.org>
parents: 46099
diff changeset
633 self.assert_(match is not None, "Invalid file name: '%s'" % tail)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
634 groups = match.groups()
46197
01a7e66525c2 #2503 make singletons compared with "is" not == or !=
Benjamin Peterson <benjamin@python.org>
parents: 46099
diff changeset
635 if previous_groups is not None:
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
636 self.assert_(int(groups[0] >= previous_groups[0]),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
637 "Non-monotonic seconds: '%s' before '%s'" %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
638 (previous_groups[0], groups[0]))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
639 self.assert_(int(groups[1] >= previous_groups[1]) or
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
640 groups[0] != groups[1],
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
641 "Non-monotonic milliseconds: '%s' before '%s'" %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
642 (previous_groups[1], groups[1]))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
643 self.assert_(int(groups[2]) == pid,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
644 "Process ID mismatch: '%s' should be '%s'" %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
645 (groups[2], pid))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
646 self.assert_(int(groups[3]) == int(previous_groups[3]) + 1,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
647 "Non-sequential counter: '%s' before '%s'" %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
648 (previous_groups[3], groups[3]))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
649 self.assert_(groups[4] == hostname,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
650 "Host name mismatch: '%s' should be '%s'" %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
651 (groups[4], hostname))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
652 previous_groups = groups
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
653 tmp_file.write(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
654 tmp_file.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
655 self.assert_(tmp_file.read() == _sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
656 tmp_file.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
657 file_count = len(os.listdir(os.path.join(self._path, "tmp")))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
658 self.assert_(file_count == repetitions,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
659 "Wrong file count: '%s' should be '%s'" %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
660 (file_count, repetitions))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
661
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
662 def test_refresh(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
663 # Update the table of contents
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
664 self.assert_(self._box._toc == {})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
665 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
666 key1 = self._box.add(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
667 self.assert_(self._box._toc == {})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
668 self._box._refresh()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
669 self.assert_(self._box._toc == {key0: os.path.join('new', key0),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
670 key1: os.path.join('new', key1)})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
671 key2 = self._box.add(self._template % 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
672 self.assert_(self._box._toc == {key0: os.path.join('new', key0),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
673 key1: os.path.join('new', key1)})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
674 self._box._refresh()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
675 self.assert_(self._box._toc == {key0: os.path.join('new', key0),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
676 key1: os.path.join('new', key1),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
677 key2: os.path.join('new', key2)})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
678
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
679 def test_lookup(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
680 # Look up message subpaths in the TOC
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
681 self.assertRaises(KeyError, lambda: self._box._lookup('foo'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
682 key0 = self._box.add(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
683 self.assert_(self._box._lookup(key0) == os.path.join('new', key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
684 os.remove(os.path.join(self._path, 'new', key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
685 self.assert_(self._box._toc == {key0: os.path.join('new', key0)})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
686 self.assertRaises(KeyError, lambda: self._box._lookup(key0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
687 self.assert_(self._box._toc == {})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
688
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
689 def test_lock_unlock(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
690 # Lock and unlock the mailbox. For Maildir, this does nothing.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
691 self._box.lock()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
692 self._box.unlock()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
693
40316
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
694 def test_folder (self):
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
695 # Test for bug #1569790: verify that folders returned by .get_folder()
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
696 # use the same factory function.
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
697 def dummy_factory (s):
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
698 return None
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
699 box = self._factory(self._path, factory=dummy_factory)
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
700 folder = box.add_folder('folder1')
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
701 self.assert_(folder._factory is dummy_factory)
40732
5dae0d7f683a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40689
diff changeset
702
40316
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
703 folder1_alias = box.get_folder('folder1')
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
704 self.assert_(folder1_alias._factory is dummy_factory)
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
705
42280
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
706 def test_directory_in_folder (self):
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
707 # Test that mailboxes still work if there's a stray extra directory
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
708 # in a folder.
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
709 for i in range(10):
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
710 self._box.add(mailbox.Message(_sample_message))
40732
5dae0d7f683a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40689
diff changeset
711
42280
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
712 # Create a stray directory
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
713 os.mkdir(os.path.join(self._path, 'cur', 'stray-dir'))
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
714
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
715 # Check that looping still works with the directory present.
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
716 for msg in self._box:
8af07e11f197 Avoid exception if there's a stray directory inside a Maildir folder.
Andrew M. Kuchling <amk@amk.ca>
parents: 41245
diff changeset
717 pass
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
718
48182
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
719 def test_file_permissions(self):
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
720 # Verify that message files are created without execute permissions
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
721 if not hasattr(os, "stat") or not hasattr(os, "umask"):
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
722 return
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
723 msg = mailbox.MaildirMessage(self._template % 0)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
724 orig_umask = os.umask(0)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
725 try:
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
726 key = self._box.add(msg)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
727 finally:
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
728 os.umask(orig_umask)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
729 path = os.path.join(self._path, self._box._lookup(key))
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
730 mode = os.stat(path).st_mode
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
731 self.assert_(mode & 0111 == 0)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
732
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
733 def test_folder_file_perms(self):
48162
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
734 # From bug #3228, we want to verify that the file created inside a Maildir
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
735 # subfolder isn't marked as executable.
48182
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
736 if not hasattr(os, "stat") or not hasattr(os, "umask"):
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
737 return
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
738
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
739 orig_umask = os.umask(0)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
740 try:
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
741 subfolder = self._box.add_folder('subfolder')
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
742 finally:
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
743 os.umask(orig_umask)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
744
48162
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
745 path = os.path.join(subfolder._path, 'maildirfolder')
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
746 st = os.stat(path)
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
747 perms = st.st_mode
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
748 self.assertFalse((perms & 0111)) # Execute bits should all be off.
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
749
53686
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
750 def test_reread(self):
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
751 # Wait for 2 seconds
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
752 time.sleep(2)
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
753
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
754 # Initially, the mailbox has not been read and the time is null.
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
755 assert getattr(self._box, '_last_read', None) is None
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
756
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
757 # Refresh mailbox; the times should now be set to something.
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
758 self._box._refresh()
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
759 assert getattr(self._box, '_last_read', None) is not None
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
760
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
761 # Try calling _refresh() again; the modification times shouldn't have
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
762 # changed, so the mailbox should not be re-reading. Re-reading causes
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
763 # the ._toc attribute to be assigned a new dictionary object, so
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
764 # we'll check that the ._toc attribute isn't a different object.
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
765 orig_toc = self._box._toc
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
766 def refreshed():
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
767 return self._box._toc is not orig_toc
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
768
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
769 time.sleep(1) # Wait 1sec to ensure time.time()'s value changes
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
770 self._box._refresh()
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
771 assert not refreshed()
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
772
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
773 # Now, write something into cur and remove it. This changes
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
774 # the mtime and should cause a re-read.
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
775 filename = os.path.join(self._path, 'cur', 'stray-file')
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
776 f = open(filename, 'w')
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
777 f.close()
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
778 os.unlink(filename)
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
779 self._box._refresh()
e0cede7f521b #1607951: Make mailbox.Maildir re-read the directories less frequently.
Andrew M. Kuchling <amk@amk.ca>
parents: 52732
diff changeset
780 assert refreshed()
48162
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
781
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
782 class _TestMboxMMDF(TestMailbox):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
783
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
784 def tearDown(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
785 self._box.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
786 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
787 for lock_remnant in glob.glob(self._path + '.*'):
41245
45669c414db4 Try to be a little more resilient to errors. This might help the test
Neal Norwitz <nnorwitz@gmail.com>
parents: 41244
diff changeset
788 test_support.unlink(lock_remnant)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
789
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
790 def test_add_from_string(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
791 # Add a string starting with 'From ' to the mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
792 key = self._box.add('From foo@bar blah\nFrom: foo\n\n0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
793 self.assert_(self._box[key].get_from() == 'foo@bar blah')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
794 self.assert_(self._box[key].get_payload() == '0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
795
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
796 def test_add_mbox_or_mmdf_message(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
797 # Add an mboxMessage or MMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
798 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
799 msg = class_('From foo@bar blah\nFrom: foo\n\n0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
800 key = self._box.add(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
801
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
802 def test_open_close_open(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
803 # Open and inspect previously-created mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
804 values = [self._template % i for i in xrange(3)]
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
805 for value in values:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
806 self._box.add(value)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
807 self._box.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
808 mtime = os.path.getmtime(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
809 self._box = self._factory(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
810 self.assert_(len(self._box) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
811 for key in self._box.iterkeys():
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
812 self.assert_(self._box.get_string(key) in values)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
813 self._box.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
814 self.assert_(mtime == os.path.getmtime(self._path))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
815
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
816 def test_add_and_close(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
817 # Verifying that closing a mailbox doesn't change added items
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
818 self._box.add(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
819 for i in xrange(3):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
820 self._box.add(self._template % i)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
821 self._box.add(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
822 self._box._file.flush()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
823 self._box._file.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
824 contents = self._box._file.read()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
825 self._box.close()
38087
b706b100c8fc Use open() instead of file()
Andrew M. Kuchling <amk@amk.ca>
parents: 38086
diff changeset
826 self.assert_(contents == open(self._path, 'rb').read())
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
827 self._box = self._factory(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
828
38932
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
829 def test_lock_conflict(self):
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
830 # Fork off a subprocess that will lock the file for 2 seconds,
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
831 # unlock it, and then exit.
38933
35cf0f87983e Windows doesn't have os.fork(). I'll just disable this test for now
Andrew M. Kuchling <amk@amk.ca>
parents: 38932
diff changeset
832 if not hasattr(os, 'fork'):
35cf0f87983e Windows doesn't have os.fork(). I'll just disable this test for now
Andrew M. Kuchling <amk@amk.ca>
parents: 38932
diff changeset
833 return
38932
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
834 pid = os.fork()
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
835 if pid == 0:
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
836 # In the child, lock the mailbox.
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
837 self._box.lock()
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
838 time.sleep(2)
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
839 self._box.unlock()
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
840 os._exit(0)
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
841
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
842 # In the parent, sleep a bit to give the child time to acquire
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
843 # the lock.
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
844 time.sleep(0.5)
39436
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
845 try:
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
846 self.assertRaises(mailbox.ExternalClashError,
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
847 self._box.lock)
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
848 finally:
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
849 # Wait for child to exit. Locking should now succeed.
6ab4c39fd7a3 Fix the failures on cygwin (2006-08-10 fixed the actual locking issue).
Neal Norwitz <nnorwitz@gmail.com>
parents: 39151
diff changeset
850 exited_pid, status = os.waitpid(pid, 0)
38945
095546ddb2f1 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 38934
diff changeset
851
38932
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
852 self._box.lock()
58f419d8c646 Add a test for a conflicting lock.
Andrew M. Kuchling <amk@amk.ca>
parents: 38087
diff changeset
853 self._box.unlock()
38945
095546ddb2f1 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 38934
diff changeset
854
40202
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
855 def test_relock(self):
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
856 # Test case for bug #1575506: the mailbox class was locking the
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
857 # wrong file object in its flush() method.
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
858 msg = "Subject: sub\n\nbody\n"
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
859 key1 = self._box.add(msg)
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
860 self._box.flush()
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
861 self._box.close()
40284
ff678669aa6e Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40202
diff changeset
862
40202
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
863 self._box = self._factory(self._path)
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
864 self._box.lock()
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
865 key2 = self._box.add(msg)
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
866 self._box.flush()
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
867 self.assert_(self._box._locked)
770c718bc97e [Bug #1575506] The _singlefileMailbox class was using the wrong file object in its flush() method, causing an error
Andrew M. Kuchling <amk@amk.ca>
parents: 39436
diff changeset
868 self._box.close()
40284
ff678669aa6e Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40202
diff changeset
869
ff678669aa6e Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40202
diff changeset
870
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
871 class TestMbox(_TestMboxMMDF):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
872
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
873 _factory = lambda self, path, factory=None: mailbox.mbox(path, factory)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
874
48162
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
875 def test_file_perms(self):
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
876 # From bug #3228, we want to verify that the mailbox file isn't executable,
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
877 # even if the umask is set to something that would leave executable bits set.
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
878 # We only run this test on platforms that support umask.
48182
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
879 if hasattr(os, 'umask') and hasattr(os, 'stat'):
48162
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
880 try:
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
881 old_umask = os.umask(0077)
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
882 self._box.close()
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
883 os.unlink(self._path)
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
884 self._box = mailbox.mbox(self._path, create=True)
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
885 self._box.add('')
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
886 self._box.close()
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
887 finally:
40be37e69158 Bug 3228: Explicitly supply the file mode to avoid creating executable files,
Andrew M. Kuchling <amk@amk.ca>
parents: 46197
diff changeset
888 os.umask(old_umask)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
889
48182
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
890 st = os.stat(self._path)
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
891 perms = st.st_mode
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
892 self.assertFalse((perms & 0111)) # Execute bits should all be off.
68df842d6330 Bug 3228: take a test from Niels Gustaebel's patch, and based on his patch, check for having os.stat available
Andrew M. Kuchling <amk@amk.ca>
parents: 48162
diff changeset
893
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
894 class TestMMDF(_TestMboxMMDF):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
895
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
896 _factory = lambda self, path, factory=None: mailbox.MMDF(path, factory)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
897
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
898
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
899 class TestMH(TestMailbox):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
900
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
901 _factory = lambda self, path, factory=None: mailbox.MH(path, factory)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
902
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
903 def test_list_folders(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
904 # List folders
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
905 self._box.add_folder('one')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
906 self._box.add_folder('two')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
907 self._box.add_folder('three')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
908 self.assert_(len(self._box.list_folders()) == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
909 self.assert_(set(self._box.list_folders()) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
910 set(('one', 'two', 'three')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
911
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
912 def test_get_folder(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
913 # Open folders
40316
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
914 def dummy_factory (s):
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
915 return None
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
916 self._box = self._factory(self._path, dummy_factory)
40732
5dae0d7f683a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40689
diff changeset
917
40316
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
918 new_folder = self._box.add_folder('foo.bar')
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
919 folder0 = self._box.get_folder('foo.bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
920 folder0.add(self._template % 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
921 self.assert_(os.path.isdir(os.path.join(self._path, 'foo.bar')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
922 folder1 = self._box.get_folder('foo.bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
923 self.assert_(folder1.get_string(folder1.keys()[0]) == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
924 self._template % 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
925
40316
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
926 # Test for bug #1569790: verify that folders returned by .get_folder()
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
927 # use the same factory function.
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
928 self.assert_(new_folder._factory is self._box._factory)
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
929 self.assert_(folder0._factory is self._box._factory)
6d99762cd818 [Bug #1569790] mailbox.Maildir.get_folder() loses factory information
Andrew M. Kuchling <amk@amk.ca>
parents: 40284
diff changeset
930
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
931 def test_add_and_remove_folders(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
932 # Delete folders
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
933 self._box.add_folder('one')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
934 self._box.add_folder('two')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
935 self.assert_(len(self._box.list_folders()) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
936 self.assert_(set(self._box.list_folders()) == set(('one', 'two')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
937 self._box.remove_folder('one')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
938 self.assert_(len(self._box.list_folders()) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
939 self.assert_(set(self._box.list_folders()) == set(('two',)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
940 self._box.add_folder('three')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
941 self.assert_(len(self._box.list_folders()) == 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
942 self.assert_(set(self._box.list_folders()) == set(('two', 'three')))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
943 self._box.remove_folder('three')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
944 self.assert_(len(self._box.list_folders()) == 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
945 self.assert_(set(self._box.list_folders()) == set(('two',)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
946 self._box.remove_folder('two')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
947 self.assert_(len(self._box.list_folders()) == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
948 self.assert_(self._box.list_folders() == [])
15298
85a509faccc7 Added test for regression on SourceForge bug #117490.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
949
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
950 def test_sequences(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
951 # Get and set sequences
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
952 self.assert_(self._box.get_sequences() == {})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
953 msg0 = mailbox.MHMessage(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
954 msg0.add_sequence('foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
955 key0 = self._box.add(msg0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
956 self.assert_(self._box.get_sequences() == {'foo':[key0]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
957 msg1 = mailbox.MHMessage(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
958 msg1.set_sequences(['bar', 'replied', 'foo'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
959 key1 = self._box.add(msg1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
960 self.assert_(self._box.get_sequences() ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
961 {'foo':[key0, key1], 'bar':[key1], 'replied':[key1]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
962 msg0.set_sequences(['flagged'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
963 self._box[key0] = msg0
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
964 self.assert_(self._box.get_sequences() ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
965 {'foo':[key1], 'bar':[key1], 'replied':[key1],
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
966 'flagged':[key0]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
967 self._box.remove(key1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
968 self.assert_(self._box.get_sequences() == {'flagged':[key0]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
969
52732
a33bc8183e4c Merged revisions 71046 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 48182
diff changeset
970 def test_issue2625(self):
a33bc8183e4c Merged revisions 71046 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 48182
diff changeset
971 msg0 = mailbox.MHMessage(self._template % 0)
a33bc8183e4c Merged revisions 71046 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 48182
diff changeset
972 msg0.add_sequence('foo')
a33bc8183e4c Merged revisions 71046 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 48182
diff changeset
973 key0 = self._box.add(msg0)
a33bc8183e4c Merged revisions 71046 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 48182
diff changeset
974 refmsg0 = self._box.get_message(key0)
a33bc8183e4c Merged revisions 71046 via svnmerge from
R. David Murray <rdmurray@bitdance.com>
parents: 48182
diff changeset
975
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
976 def test_pack(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
977 # Pack the contents of the mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
978 msg0 = mailbox.MHMessage(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
979 msg1 = mailbox.MHMessage(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
980 msg2 = mailbox.MHMessage(self._template % 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
981 msg3 = mailbox.MHMessage(self._template % 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
982 msg0.set_sequences(['foo', 'unseen'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
983 msg1.set_sequences(['foo'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
984 msg2.set_sequences(['foo', 'flagged'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
985 msg3.set_sequences(['foo', 'bar', 'replied'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
986 key0 = self._box.add(msg0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
987 key1 = self._box.add(msg1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
988 key2 = self._box.add(msg2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
989 key3 = self._box.add(msg3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
990 self.assert_(self._box.get_sequences() ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
991 {'foo':[key0,key1,key2,key3], 'unseen':[key0],
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
992 'flagged':[key2], 'bar':[key3], 'replied':[key3]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
993 self._box.remove(key2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
994 self.assert_(self._box.get_sequences() ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
995 {'foo':[key0,key1,key3], 'unseen':[key0], 'bar':[key3],
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
996 'replied':[key3]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
997 self._box.pack()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
998 self.assert_(self._box.keys() == [1, 2, 3])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
999 key0 = key0
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1000 key1 = key0 + 1
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1001 key2 = key1 + 1
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1002 self.assert_(self._box.get_sequences() ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1003 {'foo':[1, 2, 3], 'unseen':[1], 'bar':[3], 'replied':[3]})
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1004
40348
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1005 # Test case for packing while holding the mailbox locked.
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1006 key0 = self._box.add(msg1)
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1007 key1 = self._box.add(msg1)
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1008 key2 = self._box.add(msg1)
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1009 key3 = self._box.add(msg1)
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1010
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1011 self._box.remove(key0)
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1012 self._box.remove(key2)
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1013 self._box.lock()
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1014 self._box.pack()
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1015 self._box.unlock()
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1016 self.assert_(self._box.get_sequences() ==
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1017 {'foo':[1, 2, 3, 4, 5],
7cee9434981a Remove file-locking in MH.pack() method.
Andrew M. Kuchling <amk@amk.ca>
parents: 40316
diff changeset
1018 'unseen':[1], 'bar':[3], 'replied':[3]})
40732
5dae0d7f683a Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 40689
diff changeset
1019
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1020 def _get_lock_path(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1021 return os.path.join(self._path, '.mh_sequences.lock')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1022
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1023
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1024 class TestBabyl(TestMailbox):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1025
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1026 _factory = lambda self, path, factory=None: mailbox.Babyl(path, factory)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1027
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1028 def tearDown(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1029 self._box.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1030 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1031 for lock_remnant in glob.glob(self._path + '.*'):
41245
45669c414db4 Try to be a little more resilient to errors. This might help the test
Neal Norwitz <nnorwitz@gmail.com>
parents: 41244
diff changeset
1032 test_support.unlink(lock_remnant)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1033
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1034 def test_labels(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1035 # Get labels from the mailbox
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1036 self.assert_(self._box.get_labels() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1037 msg0 = mailbox.BabylMessage(self._template % 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1038 msg0.add_label('foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1039 key0 = self._box.add(msg0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1040 self.assert_(self._box.get_labels() == ['foo'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1041 msg1 = mailbox.BabylMessage(self._template % 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1042 msg1.set_labels(['bar', 'answered', 'foo'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1043 key1 = self._box.add(msg1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1044 self.assert_(set(self._box.get_labels()) == set(['foo', 'bar']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1045 msg0.set_labels(['blah', 'filed'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1046 self._box[key0] = msg0
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1047 self.assert_(set(self._box.get_labels()) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1048 set(['foo', 'bar', 'blah']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1049 self._box.remove(key1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1050 self.assert_(set(self._box.get_labels()) == set(['blah']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1051
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1052
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1053 class TestMessage(TestBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1054
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1055 _factory = mailbox.Message # Overridden by subclasses to reuse tests
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1056
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1057 def setUp(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1058 self._path = test_support.TESTFN
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1059
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1060 def tearDown(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1061 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1062
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1063 def test_initialize_with_eMM(self):
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
1064 # Initialize based on email.message.Message instance
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1065 eMM = email.message_from_string(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1066 msg = self._factory(eMM)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1067 self._post_initialize_hook(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1068 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1069
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1070 def test_initialize_with_string(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1071 # Initialize based on string
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1072 msg = self._factory(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1073 self._post_initialize_hook(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1074 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1075
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1076 def test_initialize_with_file(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1077 # Initialize based on contents of file
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1078 f = open(self._path, 'w+')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1079 f.write(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1080 f.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1081 msg = self._factory(f)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1082 self._post_initialize_hook(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1083 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1084 f.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1085
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1086 def test_initialize_with_nothing(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1087 # Initialize without arguments
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1088 msg = self._factory()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1089 self._post_initialize_hook(msg)
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
1090 self.assert_(isinstance(msg, email.message.Message))
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1091 self.assert_(isinstance(msg, mailbox.Message))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1092 self.assert_(isinstance(msg, self._factory))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1093 self.assert_(msg.keys() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1094 self.assert_(not msg.is_multipart())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1095 self.assert_(msg.get_payload() == None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1096
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1097 def test_initialize_incorrectly(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1098 # Initialize with invalid argument
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1099 self.assertRaises(TypeError, lambda: self._factory(object()))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1100
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1101 def test_become_message(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1102 # Take on the state of another message
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1103 eMM = email.message_from_string(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1104 msg = self._factory()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1105 msg._become_message(eMM)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1106 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1107
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1108 def test_explain_to(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1109 # Copy self's format-specific data to other message formats.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1110 # This test is superficial; better ones are in TestMessageConversion.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1111 msg = self._factory()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1112 for class_ in (mailbox.Message, mailbox.MaildirMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1113 mailbox.mboxMessage, mailbox.MHMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1114 mailbox.BabylMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1115 other_msg = class_()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1116 msg._explain_to(other_msg)
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
1117 other_msg = email.message.Message()
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1118 self.assertRaises(TypeError, lambda: msg._explain_to(other_msg))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1119
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1120 def _post_initialize_hook(self, msg):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1121 # Overridden by subclasses to check extra things after initialization
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1122 pass
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1123
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1124
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1125 class TestMaildirMessage(TestMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1126
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1127 _factory = mailbox.MaildirMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1128
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1129 def _post_initialize_hook(self, msg):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1130 self.assert_(msg._subdir == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1131 self.assert_(msg._info == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1132
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1133 def test_subdir(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1134 # Use get_subdir() and set_subdir()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1135 msg = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1136 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1137 msg.set_subdir('cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1138 self.assert_(msg.get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1139 msg.set_subdir('new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1140 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1141 self.assertRaises(ValueError, lambda: msg.set_subdir('tmp'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1142 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1143 msg.set_subdir('new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1144 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1145 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1146
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1147 def test_flags(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1148 # Use get_flags(), set_flags(), add_flag(), remove_flag()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1149 msg = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1150 self.assert_(msg.get_flags() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1151 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1152 msg.set_flags('F')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1153 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1154 self.assert_(msg.get_flags() == 'F')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1155 msg.set_flags('SDTP')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1156 self.assert_(msg.get_flags() == 'DPST')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1157 msg.add_flag('FT')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1158 self.assert_(msg.get_flags() == 'DFPST')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1159 msg.remove_flag('TDRP')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1160 self.assert_(msg.get_flags() == 'FS')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1161 self.assert_(msg.get_subdir() == 'new')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1162 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1163
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1164 def test_date(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1165 # Use get_date() and set_date()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1166 msg = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1167 self.assert_(abs(msg.get_date() - time.time()) < 60)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1168 msg.set_date(0.0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1169 self.assert_(msg.get_date() == 0.0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1170
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1171 def test_info(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1172 # Use get_info() and set_info()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1173 msg = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1174 self.assert_(msg.get_info() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1175 msg.set_info('1,foo=bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1176 self.assert_(msg.get_info() == '1,foo=bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1177 self.assertRaises(TypeError, lambda: msg.set_info(None))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1178 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1179
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1180 def test_info_and_flags(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1181 # Test interaction of info and flag methods
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1182 msg = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1183 self.assert_(msg.get_info() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1184 msg.set_flags('SF')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1185 self.assert_(msg.get_flags() == 'FS')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1186 self.assert_(msg.get_info() == '2,FS')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1187 msg.set_info('1,')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1188 self.assert_(msg.get_flags() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1189 self.assert_(msg.get_info() == '1,')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1190 msg.remove_flag('RPT')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1191 self.assert_(msg.get_flags() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1192 self.assert_(msg.get_info() == '1,')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1193 msg.add_flag('D')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1194 self.assert_(msg.get_flags() == 'D')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1195 self.assert_(msg.get_info() == '2,D')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1196 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1197
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1198
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1199 class _TestMboxMMDFMessage(TestMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1200
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1201 _factory = mailbox._mboxMMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1202
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1203 def _post_initialize_hook(self, msg):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1204 self._check_from(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1205
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1206 def test_initialize_with_unixfrom(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1207 # Initialize with a message that already has a _unixfrom attribute
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1208 msg = mailbox.Message(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1209 msg.set_unixfrom('From foo@bar blah')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1210 msg = mailbox.mboxMessage(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1211 self.assert_(msg.get_from() == 'foo@bar blah', msg.get_from())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1212
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1213 def test_from(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1214 # Get and set "From " line
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1215 msg = mailbox.mboxMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1216 self._check_from(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1217 msg.set_from('foo bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1218 self.assert_(msg.get_from() == 'foo bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1219 msg.set_from('foo@bar', True)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1220 self._check_from(msg, 'foo@bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1221 msg.set_from('blah@temp', time.localtime())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1222 self._check_from(msg, 'blah@temp')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1223
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1224 def test_flags(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1225 # Use get_flags(), set_flags(), add_flag(), remove_flag()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1226 msg = mailbox.mboxMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1227 self.assert_(msg.get_flags() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1228 msg.set_flags('F')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1229 self.assert_(msg.get_flags() == 'F')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1230 msg.set_flags('XODR')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1231 self.assert_(msg.get_flags() == 'RODX')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1232 msg.add_flag('FA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1233 self.assert_(msg.get_flags() == 'RODFAX')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1234 msg.remove_flag('FDXA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1235 self.assert_(msg.get_flags() == 'RO')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1236 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1237
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1238 def _check_from(self, msg, sender=None):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1239 # Check contents of "From " line
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1240 if sender is None:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1241 sender = "MAILER-DAEMON"
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1242 self.assert_(re.match(sender + r" \w{3} \w{3} [\d ]\d [\d ]\d:\d{2}:"
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1243 r"\d{2} \d{4}", msg.get_from()) is not None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1244
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1245
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1246 class TestMboxMessage(_TestMboxMMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1247
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1248 _factory = mailbox.mboxMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1249
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1250
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1251 class TestMHMessage(TestMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1252
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1253 _factory = mailbox.MHMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1254
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1255 def _post_initialize_hook(self, msg):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1256 self.assert_(msg._sequences == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1257
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1258 def test_sequences(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1259 # Get, set, join, and leave sequences
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1260 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1261 self.assert_(msg.get_sequences() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1262 msg.set_sequences(['foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1263 self.assert_(msg.get_sequences() == ['foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1264 msg.set_sequences([])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1265 self.assert_(msg.get_sequences() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1266 msg.add_sequence('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1267 self.assert_(msg.get_sequences() == ['unseen'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1268 msg.add_sequence('flagged')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1269 self.assert_(msg.get_sequences() == ['unseen', 'flagged'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1270 msg.add_sequence('flagged')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1271 self.assert_(msg.get_sequences() == ['unseen', 'flagged'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1272 msg.remove_sequence('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1273 self.assert_(msg.get_sequences() == ['flagged'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1274 msg.add_sequence('foobar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1275 self.assert_(msg.get_sequences() == ['flagged', 'foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1276 msg.remove_sequence('replied')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1277 self.assert_(msg.get_sequences() == ['flagged', 'foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1278 msg.set_sequences(['foobar', 'replied'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1279 self.assert_(msg.get_sequences() == ['foobar', 'replied'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1280
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1281
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1282 class TestBabylMessage(TestMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1283
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1284 _factory = mailbox.BabylMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1285
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1286 def _post_initialize_hook(self, msg):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1287 self.assert_(msg._labels == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1288
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1289 def test_labels(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1290 # Get, set, join, and leave labels
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1291 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1292 self.assert_(msg.get_labels() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1293 msg.set_labels(['foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1294 self.assert_(msg.get_labels() == ['foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1295 msg.set_labels([])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1296 self.assert_(msg.get_labels() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1297 msg.add_label('filed')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1298 self.assert_(msg.get_labels() == ['filed'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1299 msg.add_label('resent')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1300 self.assert_(msg.get_labels() == ['filed', 'resent'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1301 msg.add_label('resent')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1302 self.assert_(msg.get_labels() == ['filed', 'resent'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1303 msg.remove_label('filed')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1304 self.assert_(msg.get_labels() == ['resent'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1305 msg.add_label('foobar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1306 self.assert_(msg.get_labels() == ['resent', 'foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1307 msg.remove_label('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1308 self.assert_(msg.get_labels() == ['resent', 'foobar'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1309 msg.set_labels(['foobar', 'answered'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1310 self.assert_(msg.get_labels() == ['foobar', 'answered'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1311
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1312 def test_visible(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1313 # Get, set, and update visible headers
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1314 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1315 visible = msg.get_visible()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1316 self.assert_(visible.keys() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1317 self.assert_(visible.get_payload() is None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1318 visible['User-Agent'] = 'FooBar 1.0'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1319 visible['X-Whatever'] = 'Blah'
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1320 self.assert_(msg.get_visible().keys() == [])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1321 msg.set_visible(visible)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1322 visible = msg.get_visible()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1323 self.assert_(visible.keys() == ['User-Agent', 'X-Whatever'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1324 self.assert_(visible['User-Agent'] == 'FooBar 1.0')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1325 self.assert_(visible['X-Whatever'] == 'Blah')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1326 self.assert_(visible.get_payload() is None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1327 msg.update_visible()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1328 self.assert_(visible.keys() == ['User-Agent', 'X-Whatever'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1329 self.assert_(visible.get_payload() is None)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1330 visible = msg.get_visible()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1331 self.assert_(visible.keys() == ['User-Agent', 'Date', 'From', 'To',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1332 'Subject'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1333 for header in ('User-Agent', 'Date', 'From', 'To', 'Subject'):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1334 self.assert_(visible[header] == msg[header])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1335
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1336
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1337 class TestMMDFMessage(_TestMboxMMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1338
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1339 _factory = mailbox.MMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1340
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1341
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1342 class TestMessageConversion(TestBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1343
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1344 def test_plain_to_x(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1345 # Convert Message to all formats
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1346 for class_ in (mailbox.Message, mailbox.MaildirMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1347 mailbox.mboxMessage, mailbox.MHMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1348 mailbox.BabylMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1349 msg_plain = mailbox.Message(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1350 msg = class_(msg_plain)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1351 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1352
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1353 def test_x_to_plain(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1354 # Convert all formats to Message
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1355 for class_ in (mailbox.Message, mailbox.MaildirMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1356 mailbox.mboxMessage, mailbox.MHMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1357 mailbox.BabylMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1358 msg = class_(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1359 msg_plain = mailbox.Message(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1360 self._check_sample(msg_plain)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1361
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1362 def test_x_to_invalid(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1363 # Convert all formats to an invalid format
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1364 for class_ in (mailbox.Message, mailbox.MaildirMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1365 mailbox.mboxMessage, mailbox.MHMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1366 mailbox.BabylMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1367 self.assertRaises(TypeError, lambda: class_(False))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1368
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1369 def test_maildir_to_maildir(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1370 # Convert MaildirMessage to MaildirMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1371 msg_maildir = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1372 msg_maildir.set_flags('DFPRST')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1373 msg_maildir.set_subdir('cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1374 date = msg_maildir.get_date()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1375 msg = mailbox.MaildirMessage(msg_maildir)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1376 self._check_sample(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1377 self.assert_(msg.get_flags() == 'DFPRST')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1378 self.assert_(msg.get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1379 self.assert_(msg.get_date() == date)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1380
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1381 def test_maildir_to_mboxmmdf(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1382 # Convert MaildirMessage to mboxmessage and MMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1383 pairs = (('D', ''), ('F', 'F'), ('P', ''), ('R', 'A'), ('S', 'R'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1384 ('T', 'D'), ('DFPRST', 'RDFA'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1385 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1386 msg_maildir = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1387 msg_maildir.set_date(0.0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1388 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1389 msg_maildir.set_flags(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1390 msg = class_(msg_maildir)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1391 self.assert_(msg.get_flags() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1392 self.assert_(msg.get_from() == 'MAILER-DAEMON %s' %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1393 time.asctime(time.gmtime(0.0)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1394 msg_maildir.set_subdir('cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1395 self.assert_(class_(msg_maildir).get_flags() == 'RODFA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1396
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1397 def test_maildir_to_mh(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1398 # Convert MaildirMessage to MHMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1399 msg_maildir = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1400 pairs = (('D', ['unseen']), ('F', ['unseen', 'flagged']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1401 ('P', ['unseen']), ('R', ['unseen', 'replied']), ('S', []),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1402 ('T', ['unseen']), ('DFPRST', ['replied', 'flagged']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1403 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1404 msg_maildir.set_flags(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1405 self.assert_(mailbox.MHMessage(msg_maildir).get_sequences() == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1406 result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1407
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1408 def test_maildir_to_babyl(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1409 # Convert MaildirMessage to Babyl
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1410 msg_maildir = mailbox.MaildirMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1411 pairs = (('D', ['unseen']), ('F', ['unseen']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1412 ('P', ['unseen', 'forwarded']), ('R', ['unseen', 'answered']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1413 ('S', []), ('T', ['unseen', 'deleted']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1414 ('DFPRST', ['deleted', 'answered', 'forwarded']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1415 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1416 msg_maildir.set_flags(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1417 self.assert_(mailbox.BabylMessage(msg_maildir).get_labels() == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1418 result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1419
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1420 def test_mboxmmdf_to_maildir(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1421 # Convert mboxMessage and MMDFMessage to MaildirMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1422 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1423 msg_mboxMMDF = class_(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1424 msg_mboxMMDF.set_from('foo@bar', time.gmtime(0.0))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1425 pairs = (('R', 'S'), ('O', ''), ('D', 'T'), ('F', 'F'), ('A', 'R'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1426 ('RODFA', 'FRST'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1427 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1428 msg_mboxMMDF.set_flags(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1429 msg = mailbox.MaildirMessage(msg_mboxMMDF)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1430 self.assert_(msg.get_flags() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1431 self.assert_(msg.get_date() == 0.0, msg.get_date())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1432 msg_mboxMMDF.set_flags('O')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1433 self.assert_(mailbox.MaildirMessage(msg_mboxMMDF).get_subdir() == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1434 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1435
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1436 def test_mboxmmdf_to_mboxmmdf(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1437 # Convert mboxMessage and MMDFMessage to mboxMessage and MMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1438 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1439 msg_mboxMMDF = class_(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1440 msg_mboxMMDF.set_flags('RODFA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1441 msg_mboxMMDF.set_from('foo@bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1442 for class2_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1443 msg2 = class2_(msg_mboxMMDF)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1444 self.assert_(msg2.get_flags() == 'RODFA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1445 self.assert_(msg2.get_from() == 'foo@bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1446
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1447 def test_mboxmmdf_to_mh(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1448 # Convert mboxMessage and MMDFMessage to MHMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1449 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1450 msg_mboxMMDF = class_(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1451 pairs = (('R', []), ('O', ['unseen']), ('D', ['unseen']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1452 ('F', ['unseen', 'flagged']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1453 ('A', ['unseen', 'replied']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1454 ('RODFA', ['replied', 'flagged']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1455 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1456 msg_mboxMMDF.set_flags(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1457 self.assert_(mailbox.MHMessage(msg_mboxMMDF).get_sequences() \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1458 == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1459
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1460 def test_mboxmmdf_to_babyl(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1461 # Convert mboxMessage and MMDFMessage to BabylMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1462 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1463 msg = class_(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1464 pairs = (('R', []), ('O', ['unseen']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1465 ('D', ['unseen', 'deleted']), ('F', ['unseen']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1466 ('A', ['unseen', 'answered']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1467 ('RODFA', ['deleted', 'answered']))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1468 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1469 msg.set_flags(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1470 self.assert_(mailbox.BabylMessage(msg).get_labels() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1471
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1472 def test_mh_to_maildir(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1473 # Convert MHMessage to MaildirMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1474 pairs = (('unseen', ''), ('replied', 'RS'), ('flagged', 'FS'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1475 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1476 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1477 msg.add_sequence(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1478 self.assert_(mailbox.MaildirMessage(msg).get_flags() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1479 self.assert_(mailbox.MaildirMessage(msg).get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1480 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1481 msg.add_sequence('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1482 msg.add_sequence('replied')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1483 msg.add_sequence('flagged')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1484 self.assert_(mailbox.MaildirMessage(msg).get_flags() == 'FR')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1485 self.assert_(mailbox.MaildirMessage(msg).get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1486
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1487 def test_mh_to_mboxmmdf(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1488 # Convert MHMessage to mboxMessage and MMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1489 pairs = (('unseen', 'O'), ('replied', 'ROA'), ('flagged', 'ROF'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1490 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1491 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1492 msg.add_sequence(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1493 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1494 self.assert_(class_(msg).get_flags() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1495 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1496 msg.add_sequence('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1497 msg.add_sequence('replied')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1498 msg.add_sequence('flagged')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1499 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1500 self.assert_(class_(msg).get_flags() == 'OFA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1501
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1502 def test_mh_to_mh(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1503 # Convert MHMessage to MHMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1504 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1505 msg.add_sequence('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1506 msg.add_sequence('replied')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1507 msg.add_sequence('flagged')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1508 self.assert_(mailbox.MHMessage(msg).get_sequences() == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1509 ['unseen', 'replied', 'flagged'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1510
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1511 def test_mh_to_babyl(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1512 # Convert MHMessage to BabylMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1513 pairs = (('unseen', ['unseen']), ('replied', ['answered']),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1514 ('flagged', []))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1515 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1516 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1517 msg.add_sequence(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1518 self.assert_(mailbox.BabylMessage(msg).get_labels() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1519 msg = mailbox.MHMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1520 msg.add_sequence('unseen')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1521 msg.add_sequence('replied')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1522 msg.add_sequence('flagged')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1523 self.assert_(mailbox.BabylMessage(msg).get_labels() == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1524 ['unseen', 'answered'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1525
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1526 def test_babyl_to_maildir(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1527 # Convert BabylMessage to MaildirMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1528 pairs = (('unseen', ''), ('deleted', 'ST'), ('filed', 'S'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1529 ('answered', 'RS'), ('forwarded', 'PS'), ('edited', 'S'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1530 ('resent', 'PS'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1531 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1532 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1533 msg.add_label(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1534 self.assert_(mailbox.MaildirMessage(msg).get_flags() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1535 self.assert_(mailbox.MaildirMessage(msg).get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1536 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1537 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1538 'edited', 'resent'):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1539 msg.add_label(label)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1540 self.assert_(mailbox.MaildirMessage(msg).get_flags() == 'PRT')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1541 self.assert_(mailbox.MaildirMessage(msg).get_subdir() == 'cur')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1542
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1543 def test_babyl_to_mboxmmdf(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1544 # Convert BabylMessage to mboxMessage and MMDFMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1545 pairs = (('unseen', 'O'), ('deleted', 'ROD'), ('filed', 'RO'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1546 ('answered', 'ROA'), ('forwarded', 'RO'), ('edited', 'RO'),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1547 ('resent', 'RO'))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1548 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1549 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1550 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1551 msg.add_label(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1552 self.assert_(class_(msg).get_flags() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1553 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1554 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1555 'edited', 'resent'):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1556 msg.add_label(label)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1557 for class_ in (mailbox.mboxMessage, mailbox.MMDFMessage):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1558 self.assert_(class_(msg).get_flags() == 'ODA')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1559
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1560 def test_babyl_to_mh(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1561 # Convert BabylMessage to MHMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1562 pairs = (('unseen', ['unseen']), ('deleted', []), ('filed', []),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1563 ('answered', ['replied']), ('forwarded', []), ('edited', []),
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1564 ('resent', []))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1565 for setting, result in pairs:
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1566 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1567 msg.add_label(setting)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1568 self.assert_(mailbox.MHMessage(msg).get_sequences() == result)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1569 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1570 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1571 'edited', 'resent'):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1572 msg.add_label(label)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1573 self.assert_(mailbox.MHMessage(msg).get_sequences() == \
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1574 ['unseen', 'replied'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1575
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1576 def test_babyl_to_babyl(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1577 # Convert BabylMessage to BabylMessage
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1578 msg = mailbox.BabylMessage(_sample_message)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1579 msg.update_visible()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1580 for label in ('unseen', 'deleted', 'filed', 'answered', 'forwarded',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1581 'edited', 'resent'):
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1582 msg.add_label(label)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1583 msg2 = mailbox.BabylMessage(msg)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1584 self.assert_(msg2.get_labels() == ['unseen', 'deleted', 'filed',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1585 'answered', 'forwarded', 'edited',
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1586 'resent'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1587 self.assert_(msg.get_visible().keys() == msg2.get_visible().keys())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1588 for key in msg.get_visible().keys():
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1589 self.assert_(msg.get_visible()[key] == msg2.get_visible()[key])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1590
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1591
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1592 class TestProxyFileBase(TestBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1593
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1594 def _test_read(self, proxy):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1595 # Read by byte
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1596 proxy.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1597 self.assert_(proxy.read() == 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1598 proxy.seek(1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1599 self.assert_(proxy.read() == 'ar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1600 proxy.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1601 self.assert_(proxy.read(2) == 'ba')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1602 proxy.seek(1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1603 self.assert_(proxy.read(-1) == 'ar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1604 proxy.seek(2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1605 self.assert_(proxy.read(1000) == 'r')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1606
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1607 def _test_readline(self, proxy):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1608 # Read by line
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1609 proxy.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1610 self.assert_(proxy.readline() == 'foo' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1611 self.assert_(proxy.readline() == 'bar' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1612 self.assert_(proxy.readline() == 'fred' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1613 self.assert_(proxy.readline() == 'bob')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1614 proxy.seek(2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1615 self.assert_(proxy.readline() == 'o' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1616 proxy.seek(6 + 2 * len(os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1617 self.assert_(proxy.readline() == 'fred' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1618 proxy.seek(6 + 2 * len(os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1619 self.assert_(proxy.readline(2) == 'fr')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1620 self.assert_(proxy.readline(-10) == 'ed' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1621
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1622 def _test_readlines(self, proxy):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1623 # Read multiple lines
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1624 proxy.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1625 self.assert_(proxy.readlines() == ['foo' + os.linesep,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1626 'bar' + os.linesep,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1627 'fred' + os.linesep, 'bob'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1628 proxy.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1629 self.assert_(proxy.readlines(2) == ['foo' + os.linesep])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1630 proxy.seek(3 + len(os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1631 self.assert_(proxy.readlines(4 + len(os.linesep)) ==
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1632 ['bar' + os.linesep, 'fred' + os.linesep])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1633 proxy.seek(3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1634 self.assert_(proxy.readlines(1000) == [os.linesep, 'bar' + os.linesep,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1635 'fred' + os.linesep, 'bob'])
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1636
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1637 def _test_iteration(self, proxy):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1638 # Iterate by line
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1639 proxy.seek(0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1640 iterator = iter(proxy)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1641 self.assert_(iterator.next() == 'foo' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1642 self.assert_(iterator.next() == 'bar' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1643 self.assert_(iterator.next() == 'fred' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1644 self.assert_(iterator.next() == 'bob')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1645 self.assertRaises(StopIteration, lambda: iterator.next())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1646
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1647 def _test_seek_and_tell(self, proxy):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1648 # Seek and use tell to check position
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1649 proxy.seek(3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1650 self.assert_(proxy.tell() == 3)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1651 self.assert_(proxy.read(len(os.linesep)) == os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1652 proxy.seek(2, 1)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1653 self.assert_(proxy.read(1 + len(os.linesep)) == 'r' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1654 proxy.seek(-3 - len(os.linesep), 2)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1655 self.assert_(proxy.read(3) == 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1656 proxy.seek(2, 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1657 self.assert_(proxy.read() == 'o' + os.linesep + 'bar' + os.linesep)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1658 proxy.seek(100)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1659 self.assert_(proxy.read() == '')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1660
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1661 def _test_close(self, proxy):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1662 # Close a file
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1663 proxy.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1664 self.assertRaises(AttributeError, lambda: proxy.close())
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1665
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1666
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1667 class TestProxyFile(TestProxyFileBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1668
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1669 def setUp(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1670 self._path = test_support.TESTFN
38087
b706b100c8fc Use open() instead of file()
Andrew M. Kuchling <amk@amk.ca>
parents: 38086
diff changeset
1671 self._file = open(self._path, 'wb+')
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1672
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1673 def tearDown(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1674 self._file.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1675 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1676
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1677 def test_initialize(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1678 # Initialize and check position
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1679 self._file.write('foo')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1680 pos = self._file.tell()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1681 proxy0 = mailbox._ProxyFile(self._file)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1682 self.assert_(proxy0.tell() == pos)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1683 self.assert_(self._file.tell() == pos)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1684 proxy1 = mailbox._ProxyFile(self._file, 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1685 self.assert_(proxy1.tell() == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1686 self.assert_(self._file.tell() == pos)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1687
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1688 def test_read(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1689 self._file.write('bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1690 self._test_read(mailbox._ProxyFile(self._file))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1691
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1692 def test_readline(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1693 self._file.write('foo%sbar%sfred%sbob' % (os.linesep, os.linesep,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1694 os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1695 self._test_readline(mailbox._ProxyFile(self._file))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1696
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1697 def test_readlines(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1698 self._file.write('foo%sbar%sfred%sbob' % (os.linesep, os.linesep,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1699 os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1700 self._test_readlines(mailbox._ProxyFile(self._file))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1701
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1702 def test_iteration(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1703 self._file.write('foo%sbar%sfred%sbob' % (os.linesep, os.linesep,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1704 os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1705 self._test_iteration(mailbox._ProxyFile(self._file))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1706
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1707 def test_seek_and_tell(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1708 self._file.write('foo%sbar%s' % (os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1709 self._test_seek_and_tell(mailbox._ProxyFile(self._file))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1710
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1711 def test_close(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1712 self._file.write('foo%sbar%s' % (os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1713 self._test_close(mailbox._ProxyFile(self._file))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1714
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1715
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1716 class TestPartialFile(TestProxyFileBase):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1717
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1718 def setUp(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1719 self._path = test_support.TESTFN
38087
b706b100c8fc Use open() instead of file()
Andrew M. Kuchling <amk@amk.ca>
parents: 38086
diff changeset
1720 self._file = open(self._path, 'wb+')
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1721
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1722 def tearDown(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1723 self._file.close()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1724 self._delete_recursively(self._path)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1725
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1726 def test_initialize(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1727 # Initialize and check position
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1728 self._file.write('foo' + os.linesep + 'bar')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1729 pos = self._file.tell()
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1730 proxy = mailbox._PartialFile(self._file, 2, 5)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1731 self.assert_(proxy.tell() == 0)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1732 self.assert_(self._file.tell() == pos)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1733
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1734 def test_read(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1735 self._file.write('***bar***')
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1736 self._test_read(mailbox._PartialFile(self._file, 3, 6))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1737
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1738 def test_readline(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1739 self._file.write('!!!!!foo%sbar%sfred%sbob!!!!!' %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1740 (os.linesep, os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1741 self._test_readline(mailbox._PartialFile(self._file, 5,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1742 18 + 3 * len(os.linesep)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1743
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1744 def test_readlines(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1745 self._file.write('foo%sbar%sfred%sbob?????' %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1746 (os.linesep, os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1747 self._test_readlines(mailbox._PartialFile(self._file, 0,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1748 13 + 3 * len(os.linesep)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1749
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1750 def test_iteration(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1751 self._file.write('____foo%sbar%sfred%sbob####' %
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1752 (os.linesep, os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1753 self._test_iteration(mailbox._PartialFile(self._file, 4,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1754 17 + 3 * len(os.linesep)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1755
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1756 def test_seek_and_tell(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1757 self._file.write('(((foo%sbar%s$$$' % (os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1758 self._test_seek_and_tell(mailbox._PartialFile(self._file, 3,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1759 9 + 2 * len(os.linesep)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1760
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1761 def test_close(self):
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1762 self._file.write('&foo%sbar%s^' % (os.linesep, os.linesep))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1763 self._test_close(mailbox._PartialFile(self._file, 1,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1764 6 + 3 * len(os.linesep)))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1765
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1766
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1767 ## Start: tests from the original module (for backward compatibility).
17375
0c87ac674ce1 Some other tests, when failing, don't always remove their TESTFN file.
Guido van Rossum <guido@python.org>
parents: 16936
diff changeset
1768
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1769 FROM_ = "From some.body@dummy.domain Sat Jul 24 13:43:35 2004\n"
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1770 DUMMY_MESSAGE = """\
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1771 From: some.body@dummy.domain
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1772 To: me@my.domain
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1773 Subject: Simple Test
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1774
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1775 This is a dummy message.
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1776 """
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1777
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1778 class MaildirTestCase(unittest.TestCase):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1779
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1780 def setUp(self):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1781 # create a new maildir mailbox to work with:
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1782 self._dir = test_support.TESTFN
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1783 os.mkdir(self._dir)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1784 os.mkdir(os.path.join(self._dir, "cur"))
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1785 os.mkdir(os.path.join(self._dir, "tmp"))
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1786 os.mkdir(os.path.join(self._dir, "new"))
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1787 self._counter = 1
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1788 self._msgfiles = []
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1789
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1790 def tearDown(self):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1791 map(os.unlink, self._msgfiles)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1792 os.rmdir(os.path.join(self._dir, "cur"))
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1793 os.rmdir(os.path.join(self._dir, "tmp"))
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1794 os.rmdir(os.path.join(self._dir, "new"))
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1795 os.rmdir(self._dir)
15298
85a509faccc7 Added test for regression on SourceForge bug #117490.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
1796
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1797 def createMessage(self, dir, mbox=False):
18165
0bad42e56320 The test used int(time.time()) to get a random number, but this doesn't work on the mac (where times are bigger than ints). Changed to int(time.time()%1000000).
Jack Jansen <jack.jansen@cwi.nl>
parents: 17908
diff changeset
1798 t = int(time.time() % 1000000)
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1799 pid = self._counter
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1800 self._counter += 1
20654
edd9d0b3c47e SF patch #474590 -- RISC OS support
Guido van Rossum <guido@python.org>
parents: 20013
diff changeset
1801 filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1802 tmpname = os.path.join(self._dir, "tmp", filename)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1803 newname = os.path.join(self._dir, dir, filename)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1804 fp = open(tmpname, "w")
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1805 self._msgfiles.append(tmpname)
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1806 if mbox:
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1807 fp.write(FROM_)
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1808 fp.write(DUMMY_MESSAGE)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1809 fp.close()
17908
d884235fe75c create_message(): When os.link() doesn't exist, make a copy of the msg
Tim Peters <tim.peters@gmail.com>
parents: 17885
diff changeset
1810 if hasattr(os, "link"):
d884235fe75c create_message(): When os.link() doesn't exist, make a copy of the msg
Tim Peters <tim.peters@gmail.com>
parents: 17885
diff changeset
1811 os.link(tmpname, newname)
d884235fe75c create_message(): When os.link() doesn't exist, make a copy of the msg
Tim Peters <tim.peters@gmail.com>
parents: 17885
diff changeset
1812 else:
d884235fe75c create_message(): When os.link() doesn't exist, make a copy of the msg
Tim Peters <tim.peters@gmail.com>
parents: 17885
diff changeset
1813 fp = open(newname, "w")
d884235fe75c create_message(): When os.link() doesn't exist, make a copy of the msg
Tim Peters <tim.peters@gmail.com>
parents: 17885
diff changeset
1814 fp.write(DUMMY_MESSAGE)
d884235fe75c create_message(): When os.link() doesn't exist, make a copy of the msg
Tim Peters <tim.peters@gmail.com>
parents: 17885
diff changeset
1815 fp.close()
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1816 self._msgfiles.append(newname)
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1817 return tmpname
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1818
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1819 def test_empty_maildir(self):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1820 """Test an empty maildir mailbox"""
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1821 # Test for regression on bug #117490:
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1822 # Make sure the boxes attribute actually gets set.
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1823 self.mbox = mailbox.Maildir(test_support.TESTFN)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1824 #self.assert_(hasattr(self.mbox, "boxes"))
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1825 #self.assert_(len(self.mbox.boxes) == 0)
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1826 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1827 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1828
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1829 def test_nonempty_maildir_cur(self):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1830 self.createMessage("cur")
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1831 self.mbox = mailbox.Maildir(test_support.TESTFN)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1832 #self.assert_(len(self.mbox.boxes) == 1)
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1833 self.assert_(self.mbox.next() is not None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1834 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1835 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1836
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1837 def test_nonempty_maildir_new(self):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1838 self.createMessage("new")
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1839 self.mbox = mailbox.Maildir(test_support.TESTFN)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1840 #self.assert_(len(self.mbox.boxes) == 1)
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1841 self.assert_(self.mbox.next() is not None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1842 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1843 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1844
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1845 def test_nonempty_maildir_both(self):
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1846 self.createMessage("cur")
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1847 self.createMessage("new")
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1848 self.mbox = mailbox.Maildir(test_support.TESTFN)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1849 #self.assert_(len(self.mbox.boxes) == 2)
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1850 self.assert_(self.mbox.next() is not None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1851 self.assert_(self.mbox.next() is not None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1852 self.assert_(self.mbox.next() is None)
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1853 self.assert_(self.mbox.next() is None)
15298
85a509faccc7 Added test for regression on SourceForge bug #117490.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
1854
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1855 def test_unix_mbox(self):
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1856 ### should be better!
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
1857 import email.parser
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1858 fname = self.createMessage("cur", True)
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1859 n = 0
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1860 for msg in mailbox.PortableUnixMailbox(open(fname),
40689
b23711be2b3e Use new email module names (#1637162, #1637159, #1637157).
Georg Brandl <georg@python.org>
parents: 40348
diff changeset
1861 email.parser.Parser().parse):
32807
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1862 n += 1
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1863 self.assertEqual(msg["subject"], "Simple Test")
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1864 self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1865 self.assertEqual(n, 1)
4a51cdcf8615 added test for bug #996359.
Skip Montanaro <skip@pobox.com>
parents: 24364
diff changeset
1866
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1867 ## End: classes from the original module (for backward compatibility).
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1868
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1869
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1870 _sample_message = """\
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1871 Return-Path: <gkj@gregorykjohnson.com>
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1872 X-Original-To: gkj+person@localhost
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1873 Delivered-To: gkj+person@localhost
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1874 Received: from localhost (localhost [127.0.0.1])
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1875 by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1876 for <gkj+person@localhost>; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1877 Delivered-To: gkj@sundance.gregorykjohnson.com
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1878 Received: from localhost [127.0.0.1]
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1879 by localhost with POP3 (fetchmail-6.2.5)
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1880 for gkj+person@localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1881 Received: from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1882 by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1883 for <gkj@gregorykjohnson.com>; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1884 Received: by andy.gregorykjohnson.com (Postfix, from userid 1000)
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1885 id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1886 Date: Wed, 13 Jul 2005 17:23:11 -0400
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1887 From: "Gregory K. Johnson" <gkj@gregorykjohnson.com>
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1888 To: gkj@gregorykjohnson.com
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1889 Subject: Sample message
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1890 Message-ID: <20050713212311.GC4701@andy.gregorykjohnson.com>
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1891 Mime-Version: 1.0
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1892 Content-Type: multipart/mixed; boundary="NMuMz9nt05w80d4+"
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1893 Content-Disposition: inline
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1894 User-Agent: Mutt/1.5.9i
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1895
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1896
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1897 --NMuMz9nt05w80d4+
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1898 Content-Type: text/plain; charset=us-ascii
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1899 Content-Disposition: inline
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1900
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1901 This is a sample message.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1902
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1903 --
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1904 Gregory K. Johnson
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1905
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1906 --NMuMz9nt05w80d4+
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1907 Content-Type: application/octet-stream
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1908 Content-Disposition: attachment; filename="text.gz"
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1909 Content-Transfer-Encoding: base64
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1910
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1911 H4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1912 3FYlAAAA
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1913
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1914 --NMuMz9nt05w80d4+--
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1915 """
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1917 _sample_headers = {
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1918 "Return-Path":"<gkj@gregorykjohnson.com>",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1919 "X-Original-To":"gkj+person@localhost",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1920 "Delivered-To":"gkj+person@localhost",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1921 "Received":"""from localhost (localhost [127.0.0.1])
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1922 by andy.gregorykjohnson.com (Postfix) with ESMTP id 356ED9DD17
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1923 for <gkj+person@localhost>; Wed, 13 Jul 2005 17:23:16 -0400 (EDT)""",
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1924 "Delivered-To":"gkj@sundance.gregorykjohnson.com",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1925 "Received":"""from localhost [127.0.0.1]
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1926 by localhost with POP3 (fetchmail-6.2.5)
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1927 for gkj+person@localhost (single-drop); Wed, 13 Jul 2005 17:23:16 -0400 (EDT)""",
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1928 "Received":"""from andy.gregorykjohnson.com (andy.gregorykjohnson.com [64.32.235.228])
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1929 by sundance.gregorykjohnson.com (Postfix) with ESMTP id 5B056316746
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1930 for <gkj@gregorykjohnson.com>; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)""",
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1931 "Received":"""by andy.gregorykjohnson.com (Postfix, from userid 1000)
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1932 id 490CD9DD17; Wed, 13 Jul 2005 17:23:11 -0400 (EDT)""",
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1933 "Date":"Wed, 13 Jul 2005 17:23:11 -0400",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1934 "From":""""Gregory K. Johnson" <gkj@gregorykjohnson.com>""",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1935 "To":"gkj@gregorykjohnson.com",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1936 "Subject":"Sample message",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1937 "Mime-Version":"1.0",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1938 "Content-Type":"""multipart/mixed; boundary="NMuMz9nt05w80d4+\"""",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1939 "Content-Disposition":"inline",
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1940 "User-Agent": "Mutt/1.5.9i" }
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1941
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1942 _sample_payloads = ("""This is a sample message.
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1943
37917
fb1837e88e72 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 37916
diff changeset
1944 --
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1945 Gregory K. Johnson
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1946 """,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1947 """H4sICM2D1UIAA3RleHQAC8nILFYAokSFktSKEoW0zJxUPa7wzJIMhZLyfIWczLzUYj0uAHTs
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1948 3FYlAAAA
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1949 """)
15298
85a509faccc7 Added test for regression on SourceForge bug #117490.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
1950
17885
a93daafbd13d Re-write the mailbox test suite to use PyUnit. Cover a lot more ground
Fred Drake <fdrake@acm.org>
parents: 17375
diff changeset
1951
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18165
diff changeset
1952 def test_main():
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1953 tests = (TestMailboxSuperclass, TestMaildir, TestMbox, TestMMDF, TestMH,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1954 TestBabyl, TestMessage, TestMaildirMessage, TestMboxMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1955 TestMHMessage, TestBabylMessage, TestMMDFMessage,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1956 TestMessageConversion, TestProxyFile, TestPartialFile,
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1957 MaildirTestCase)
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1958 test_support.run_unittest(*tests)
38961
0a83dc3529d1 Add new utility function, reap_children(), to test_support. This should
Neal Norwitz <nnorwitz@gmail.com>
parents: 38945
diff changeset
1959 test_support.reap_children()
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18165
diff changeset
1960
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18165
diff changeset
1961
37916
de4a5f55e21d Add Gregory K. Johnson's revised version of mailbox.py (funded by
Andrew M. Kuchling <amk@amk.ca>
parents: 32807
diff changeset
1962 if __name__ == '__main__':
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18165
diff changeset
1963 test_main()