Commit ea72dcb0 authored by Andrew M. Kuchling's avatar Andrew M. Kuchling

Bug 1277: make Maildir use the user-provided factory instead of hard-wiring MaildirMessage.

parent 5f4fc831
......@@ -315,7 +315,10 @@ class Maildir(Mailbox):
subpath = self._lookup(key)
f = open(os.path.join(self._path, subpath), 'r')
try:
msg = MaildirMessage(f)
if self._factory:
msg = self._factory(f)
else:
msg = MaildirMessage(f)
finally:
f.close()
subdir, name = os.path.split(subpath)
......
......@@ -508,6 +508,20 @@ class TestMaildir(TestMailbox):
self.assert_(msg_returned.get_flags() == 'S')
self.assert_(msg_returned.get_payload() == '3')
def test_consistent_factory(self):
# Add a message.
msg = mailbox.MaildirMessage(self._template % 0)
msg.set_subdir('cur')
msg.set_flags('RF')
key = self._box.add(msg)
# Create new mailbox with
class FakeMessage(mailbox.MaildirMessage):
pass
box = mailbox.Maildir(self._path, factory=FakeMessage)
msg2 = box.get_message(key)
self.assert_(isinstance(msg2, FakeMessage))
def test_initialize_new(self):
# Initialize a non-existent mailbox
self.tearDown()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment