Hi George. Sorry I was on vacation and mostly off-line.
On Aug 06, 2012, at 08:28 PM, George Chatzisofroniou wrote:
I was wondering what is the best way to test an IArchive implementation. Are there any built in test modes that will allow me to send sample messages? I only care about the processing of the messages through my IArchive implementation rather than actually sending them out.
There is an existing test in src/mailman/archiving/tests/test_prototype.py which tests the prototype archiver. It probably does way more than you need though, since it interfaces with the file system. But it should give you a fairly decent idea of how to set up a test for an IArchiver implementation.
A few important things to notice. You'll need to set a layer in the test class. ConfigLayer ensures that the entire ZCA and configuration subsystem is initialized before the test is run; you'll need at least that.
If you do want to send out a sample message, you can use SMTPLayer, which sets up a fake SMTP server and ensures that any email you send through Mailman's delivery system will get delivered to this fake server. Your test can then check that the message arrived and has the contents you expect. If you grep for SMTPLayer, you should find useful examples of that.
See src/mailman/testing/layers.py for the set of existing layers. Their use is a bit funky because of the weird zope.testing semantics (something I want to get rid of eventually). In particular, normal inheritance rules don't apply, which is why you never see upcalls to super(). But that may be detail you don't care about.
I hope that helps. I'm back from vacation now and happy to answer anything else if I can.