diff options
Diffstat (limited to 'src/mailman/core/tests/test_runner.py')
| -rw-r--r-- | src/mailman/core/tests/test_runner.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/mailman/core/tests/test_runner.py b/src/mailman/core/tests/test_runner.py index 2875b3b10..06c360fa0 100644 --- a/src/mailman/core/tests/test_runner.py +++ b/src/mailman/core/tests/test_runner.py @@ -25,14 +25,16 @@ __all__ = [ ] +import os import unittest +from email.mime.multipart import MIMEMultipart from mailman.app.lifecycle import create_list from mailman.config import config from mailman.core.runner import Runner from mailman.interfaces.runner import RunnerCrashEvent from mailman.testing.helpers import ( - configuration, event_subscribers, get_queue_messages, + configuration, event_subscribers, get_queue_messages, LogFileMark, make_testable_runner, specialized_message_from_string as mfs) from mailman.testing.layers import ConfigLayer @@ -42,6 +44,11 @@ class CrashingRunner(Runner): def _dispose(self, mlist, msg, msgdata): raise RuntimeError('borked') + +class StoringRunner(Runner): + _disposed = [] + def _dispose(self, mlist, msg, msgdata): + self._disposed.append((mlist, msg, msgdata)) class TestRunner(unittest.TestCase): @@ -87,3 +94,15 @@ Message-ID: <ant> shunted = get_queue_messages('shunt') self.assertEqual(len(shunted), 1) self.assertEqual(shunted[0].msg['message-id'], '<ant>') + + def test_multipart_message(self): + runner = make_testable_runner(StoringRunner, 'in') + msg = MIMEMultipart() + msg["Message-ID"] = "<ant>" + config.switchboards['in'].enqueue(msg, listname='test@example.com') + with event_subscribers(self._got_event): + runner.run() + error_log = LogFileMark('mailman.error') + self.assertEqual(len(self._events), 0, error_log.read()) + self.assertEqual(len(runner._disposed), 1) + self.assertEqual(runner._disposed[0][1]["Message-ID"], "<ant>") |
