~malept/ubuntu/lucid/python2.6/dev-dependency-fix

« back to all changes in this revision

Viewing changes to Lib/test/test_old_mailbox.py

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2009-02-13 12:51:00 UTC
  • Revision ID: james.westby@ubuntu.com-20090213125100-uufgcb9yeqzujpqw
Tags: upstream-2.6.1
ImportĀ upstreamĀ versionĀ 2.6.1

Show diffs side-by-side

added added

removed removed

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