summaryrefslogtreecommitdiff
path: root/src/mailman/testing/helpers.py
diff options
context:
space:
mode:
authorBarry Warsaw2010-02-16 18:45:55 -0500
committerBarry Warsaw2010-02-16 18:45:55 -0500
commit006515005077b7b4b6fbb18d593800264ed307c4 (patch)
tree53c04cdb1572e7d6683aebfd3fb58c526bf3f345 /src/mailman/testing/helpers.py
parent24631a0aad7c1be8b71303b509552f69240743b5 (diff)
downloadmailman-006515005077b7b4b6fbb18d593800264ed307c4.tar.gz
mailman-006515005077b7b4b6fbb18d593800264ed307c4.tar.zst
mailman-006515005077b7b4b6fbb18d593800264ed307c4.zip
Diffstat (limited to 'src/mailman/testing/helpers.py')
-rw-r--r--src/mailman/testing/helpers.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/src/mailman/testing/helpers.py b/src/mailman/testing/helpers.py
index 0897d1d74..b9936ac71 100644
--- a/src/mailman/testing/helpers.py
+++ b/src/mailman/testing/helpers.py
@@ -23,6 +23,7 @@ __metaclass__ = type
__all__ = [
'TestableMaster',
'digest_mbox',
+ 'event_subscribers',
'get_lmtp_client',
'get_queue_messages',
'make_testable_runner',
@@ -40,6 +41,9 @@ import smtplib
import datetime
import threading
+from contextlib import contextmanager
+from zope import event
+
from mailman.bin.master import Loop as Master
from mailman.config import config
from mailman.utilities.mailbox import Mailbox
@@ -88,10 +92,12 @@ class _Bag:
setattr(self, key, value)
-def get_queue_messages(queue_name):
+def get_queue_messages(queue_name, sort_on=None):
"""Return and clear all the messages in the given queue.
:param queue_name: A string naming a queue.
+ :param sort_on: The message header to sort on. If None (the default),
+ no sorting is performed.
:return: A list of 2-tuples where each item contains the message and
message metadata.
"""
@@ -101,6 +107,8 @@ def get_queue_messages(queue_name):
msg, msgdata = queue.dequeue(filebase)
messages.append(_Bag(msg=msg, msgdata=msgdata))
queue.finish(filebase)
+ if sort_on is not None:
+ messages.sort(key=lambda item: item.msg[sort_on])
return messages
@@ -229,3 +237,18 @@ def wait_for_webservice():
time.sleep(0.1)
else:
break
+
+
+
+@contextmanager
+def event_subscribers(*subscribers):
+ """Temporarily set the Zope event subscribers list.
+
+ :param subscribers: A sequence of event subscribers.
+ :type subscribers: sequence of callables, each receiving one argument, the
+ event.
+ """
+ old_subscribers = event.subscribers[:]
+ event.subscribers = list(subscribers)
+ yield
+ event.subscribers[:] = old_subscribers