home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2011 June / maximum-cd-2011-06.iso / DiscContents / LibO_3.3.1_Win_x86_install_multi.exe / libreoffice1.cab / test_old_mailbox.py < prev    next >
Encoding:
Python Source  |  2011-02-15  |  4.5 KB  |  154 lines

  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()
  154.