mirror of
https://github.com/python/cpython.git
synced 2025-11-03 11:23:31 +00:00
Make copy of test_mailbox.py. We'll still want to check the backward
compatibility classes in the new mailbox.py that I'll be committing in a few minutes. One change has been made: the tests use len(mbox) instead of len(mbox.boxes). The 'boxes' attribute was never documented and contains some internal state that seems unlikely to have been useful.
This commit is contained in:
parent
6ce35a9691
commit
81efcf6833
1 changed files with 120 additions and 0 deletions
120
Lib/test/test_old_mailbox.py
Normal file
120
Lib/test/test_old_mailbox.py
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
# This set of tests exercises the backward-compatibility class
|
||||||
|
# in mailbox.py (the ones without write support).
|
||||||
|
|
||||||
|
import mailbox
|
||||||
|
import os
|
||||||
|
import time
|
||||||
|
import unittest
|
||||||
|
from test import test_support
|
||||||
|
|
||||||
|
# cleanup earlier tests
|
||||||
|
try:
|
||||||
|
os.unlink(test_support.TESTFN)
|
||||||
|
except os.error:
|
||||||
|
pass
|
||||||
|
|
||||||
|
FROM_ = "From some.body@dummy.domain Sat Jul 24 13:43:35 2004\n"
|
||||||
|
DUMMY_MESSAGE = """\
|
||||||
|
From: some.body@dummy.domain
|
||||||
|
To: me@my.domain
|
||||||
|
Subject: Simple Test
|
||||||
|
|
||||||
|
This is a dummy message.
|
||||||
|
"""
|
||||||
|
|
||||||
|
class MaildirTestCase(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
# create a new maildir mailbox to work with:
|
||||||
|
self._dir = test_support.TESTFN
|
||||||
|
os.mkdir(self._dir)
|
||||||
|
os.mkdir(os.path.join(self._dir, "cur"))
|
||||||
|
os.mkdir(os.path.join(self._dir, "tmp"))
|
||||||
|
os.mkdir(os.path.join(self._dir, "new"))
|
||||||
|
self._counter = 1
|
||||||
|
self._msgfiles = []
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
map(os.unlink, self._msgfiles)
|
||||||
|
os.rmdir(os.path.join(self._dir, "cur"))
|
||||||
|
os.rmdir(os.path.join(self._dir, "tmp"))
|
||||||
|
os.rmdir(os.path.join(self._dir, "new"))
|
||||||
|
os.rmdir(self._dir)
|
||||||
|
|
||||||
|
def createMessage(self, dir, mbox=False):
|
||||||
|
t = int(time.time() % 1000000)
|
||||||
|
pid = self._counter
|
||||||
|
self._counter += 1
|
||||||
|
filename = os.extsep.join((str(t), str(pid), "myhostname", "mydomain"))
|
||||||
|
tmpname = os.path.join(self._dir, "tmp", filename)
|
||||||
|
newname = os.path.join(self._dir, dir, filename)
|
||||||
|
fp = open(tmpname, "w")
|
||||||
|
self._msgfiles.append(tmpname)
|
||||||
|
if mbox:
|
||||||
|
fp.write(FROM_)
|
||||||
|
fp.write(DUMMY_MESSAGE)
|
||||||
|
fp.close()
|
||||||
|
if hasattr(os, "link"):
|
||||||
|
os.link(tmpname, newname)
|
||||||
|
else:
|
||||||
|
fp = open(newname, "w")
|
||||||
|
fp.write(DUMMY_MESSAGE)
|
||||||
|
fp.close()
|
||||||
|
self._msgfiles.append(newname)
|
||||||
|
return tmpname
|
||||||
|
|
||||||
|
def test_empty_maildir(self):
|
||||||
|
"""Test an empty maildir mailbox"""
|
||||||
|
# Test for regression on bug #117490:
|
||||||
|
self.mbox = mailbox.Maildir(test_support.TESTFN)
|
||||||
|
self.assert_(len(self.mbox) == 0)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
|
||||||
|
def test_nonempty_maildir_cur(self):
|
||||||
|
self.createMessage("cur")
|
||||||
|
self.mbox = mailbox.Maildir(test_support.TESTFN)
|
||||||
|
self.assert_(len(self.mbox) == 1)
|
||||||
|
self.assert_(self.mbox.next() is not None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
|
||||||
|
def test_nonempty_maildir_new(self):
|
||||||
|
self.createMessage("new")
|
||||||
|
self.mbox = mailbox.Maildir(test_support.TESTFN)
|
||||||
|
self.assert_(len(self.mbox) == 1)
|
||||||
|
self.assert_(self.mbox.next() is not None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
|
||||||
|
def test_nonempty_maildir_both(self):
|
||||||
|
self.createMessage("cur")
|
||||||
|
self.createMessage("new")
|
||||||
|
self.mbox = mailbox.Maildir(test_support.TESTFN)
|
||||||
|
self.assert_(len(self.mbox) == 2)
|
||||||
|
self.assert_(self.mbox.next() is not None)
|
||||||
|
self.assert_(self.mbox.next() is not None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
self.assert_(self.mbox.next() is None)
|
||||||
|
|
||||||
|
def test_unix_mbox(self):
|
||||||
|
### should be better!
|
||||||
|
import email.Parser
|
||||||
|
fname = self.createMessage("cur", True)
|
||||||
|
n = 0
|
||||||
|
for msg in mailbox.PortableUnixMailbox(open(fname),
|
||||||
|
email.Parser.Parser().parse):
|
||||||
|
n += 1
|
||||||
|
self.assertEqual(msg["subject"], "Simple Test")
|
||||||
|
self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
|
||||||
|
self.assertEqual(n, 1)
|
||||||
|
|
||||||
|
# XXX We still need more tests!
|
||||||
|
|
||||||
|
|
||||||
|
def test_main():
|
||||||
|
test_support.run_unittest(MaildirTestCase)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
test_main()
|
||||||
Loading…
Add table
Add a link
Reference in a new issue