summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mailman/model/listmanager.py2
-rw-r--r--src/mailman/model/tests/test_listmanager.py20
-rw-r--r--tox.ini2
3 files changed, 16 insertions, 8 deletions
diff --git a/src/mailman/model/listmanager.py b/src/mailman/model/listmanager.py
index b3e5be69a..7e69064c9 100644
--- a/src/mailman/model/listmanager.py
+++ b/src/mailman/model/listmanager.py
@@ -78,9 +78,9 @@ class ListManager:
notify(ListDeletingEvent(mlist))
# First delete information associated with the mailing list.
IAcceptableAliasSet(mlist).clear()
+ store.query(AutoResponseRecord).filter_by(mailing_list=mlist).delete()
store.query(ContentFilter).filter_by(mailing_list=mlist).delete()
store.query(ListArchiver).filter_by(mailing_list=mlist).delete()
- store.query(AutoResponseRecord).filter_by(mailing_list=mlist).delete()
store.delete(mlist)
notify(ListDeletedEvent(fqdn_listname))
diff --git a/src/mailman/model/tests/test_listmanager.py b/src/mailman/model/tests/test_listmanager.py
index 0b68002e0..c8fe39186 100644
--- a/src/mailman/model/tests/test_listmanager.py
+++ b/src/mailman/model/tests/test_listmanager.py
@@ -29,7 +29,6 @@ import unittest
from mailman.app.lifecycle import create_list
from mailman.app.moderator import hold_message
from mailman.config import config
-from mailman.database.transaction import transaction
from mailman.interfaces.autorespond import IAutoResponseSet, Response
from mailman.interfaces.address import InvalidEmailAddressError
from mailman.interfaces.listmanager import (
@@ -89,23 +88,30 @@ class TestListManager(unittest.TestCase):
sorted(getUtility(IListManager).list_ids),
['ant.example.com', 'bee.example.com', 'cat.example.com'])
- def test_delete_lists_with_data_in_listarchiver(self):
+ def test_delete_list_with_list_archiver_set(self):
+ # Ensure that mailing lists with archiver sets can be deleted. In
+ # issue #115, this fails under PostgreSQL, but not SQLite.
mlist = create_list('ant@example.com')
- aset = IListArchiverSet(mlist)
+ # We don't keep a reference to this archiver set just because it makes
+ # pyflakes unhappy. It doesn't change the outcome.
+ IListArchiverSet(mlist)
list_manager = getUtility(IListManager)
list_manager.delete(mlist)
self.assertIsNone(list_manager.get('ant@example.com'))
- def test_delete_lists_with_data_in_autoresponserecord(self):
+ def test_delete_list_with_autoresponse_record(self):
+ # Ensure that mailing lists with auto-response sets can be deleted. In
+ # issue #115, this fails under PostgreSQL, but not SQLite.
list_manager = getUtility(IListManager)
user_manager = getUtility(IUserManager)
mlist = create_list('ant@example.com')
- addr = user_manager.create_address('aperson@example.com')
- autoresset = IAutoResponseSet(mlist)
- autoresset.response_sent(addr, Response.hold)
+ address = user_manager.create_address('aperson@example.com')
+ autoresponse_set = IAutoResponseSet(mlist)
+ autoresponse_set.response_sent(address, Response.hold)
list_manager.delete(mlist)
self.assertIsNone(list_manager.get('ant@example.com'))
+
class TestListLifecycleEvents(unittest.TestCase):
layer = ConfigLayer
diff --git a/tox.ini b/tox.ini
index ac35f1fb9..d0c6e294b 100644
--- a/tox.ini
+++ b/tox.ini
@@ -6,6 +6,8 @@ recreate = True
commands = python -m nose2 -v
#sitepackages = True
usedevelop = True
+passenv=
+ MAILMAN_*
# This environment requires you to set up PostgreSQL and create a .cfg file
# somewhere outside of the source tree.