symbian-qemu-0.9.1-12/python-2.6.1/Lib/test/test_old_mailbox.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     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()