diff options
| author | Barry Warsaw | 2007-06-22 17:15:03 -0400 |
|---|---|---|
| committer | Barry Warsaw | 2007-06-22 17:15:03 -0400 |
| commit | d629fe4305a062a62eb77d12d8847b7e405ff5e6 (patch) | |
| tree | a7bdda181b945ba86afeb89a2439f1836453bdd1 /Mailman | |
| parent | fba4983f88e0305a32e3135d129621890bf9adde (diff) | |
| download | mailman-d629fe4305a062a62eb77d12d8847b7e405ff5e6.tar.gz mailman-d629fe4305a062a62eb77d12d8847b7e405ff5e6.tar.zst mailman-d629fe4305a062a62eb77d12d8847b7e405ff5e6.zip | |
Refactor tests to get consistent clean up behavior. The clean up sections
have been removed from the .txt files and instead added to the test harness,
which all doctests now use.
Diffstat (limited to 'Mailman')
30 files changed, 64 insertions, 265 deletions
diff --git a/Mailman/docs/ack-headers.txt b/Mailman/docs/ack-headers.txt index b6264b465..1e335ad20 100644 --- a/Mailman/docs/ack-headers.txt +++ b/Mailman/docs/ack-headers.txt @@ -53,13 +53,3 @@ Any existing X-Ack header in the original message is removed. <BLANKLINE> A message of great import. <BLANKLINE> - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/acknowledge.txt b/Mailman/docs/acknowledge.txt index 6f47fd64d..6c7e3c28f 100644 --- a/Mailman/docs/acknowledge.txt +++ b/Mailman/docs/acknowledge.txt @@ -174,13 +174,3 @@ If there is no subject, then the receipt will use a generic message. List info page: http://lists.example.com/listinfo/_xtest@example.com Your preferences: http://example.com/aperson@example.com <BLANKLINE> - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/addresses.txt b/Mailman/docs/addresses.txt index c6a2a9873..774a90855 100644 --- a/Mailman/docs/addresses.txt +++ b/Mailman/docs/addresses.txt @@ -174,21 +174,3 @@ Now that Elly is both an owner and a member of the mailing list. _xtext@example.com as MemberRole.member>] >>> sorted(mlist.digest_members.members) [] - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> for user in mgr.users: - ... mgr.delete_user(user) - >>> for address in mgr.addresses: - ... mgr.delete_address(address) - >>> flush() - >>> sorted(config.list_manager.names) - [] - >>> sorted(mgr.users) - [] - >>> sorted(mgr.addresses) - [] diff --git a/Mailman/docs/after-delivery.txt b/Mailman/docs/after-delivery.txt index ac2472745..334b2b506 100644 --- a/Mailman/docs/after-delivery.txt +++ b/Mailman/docs/after-delivery.txt @@ -31,13 +31,3 @@ attributes. True >>> mlist.post_id 11 - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/avoid-duplicates.txt b/Mailman/docs/avoid-duplicates.txt index 6a58382fd..d28f77dba 100644 --- a/Mailman/docs/avoid-duplicates.txt +++ b/Mailman/docs/avoid-duplicates.txt @@ -171,13 +171,3 @@ Other headers checked for recipients include the To... <BLANKLINE> Something of great import. <BLANKLINE> - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/calc-recips.txt b/Mailman/docs/calc-recips.txt index 9646778d6..89742d9f7 100644 --- a/Mailman/docs/calc-recips.txt +++ b/Mailman/docs/calc-recips.txt @@ -105,26 +105,3 @@ XXX Test various urgent deliveries: * test_urgent_moderator() * test_urgent_admin() * test_urgent_reject() - - -Clean up --------- - - >>> for member in mlist.members.members: - ... member.unsubscribe() - >>> flush() - >>> list(mlist.members.members) - [] - >>> for user in config.user_manager.users: - ... config.user_manager.delete_user(user) - >>> for address in config.user_manager.addresses: - ... config.user_manager.delete_address(address) - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.user_manager.users) - [] - >>> list(config.user_manager.addresses) - [] - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/cleanse.txt b/Mailman/docs/cleanse.txt index 85b636737..99c8ca71f 100644 --- a/Mailman/docs/cleanse.txt +++ b/Mailman/docs/cleanse.txt @@ -98,13 +98,3 @@ Hotmail apparently sets X-Originating-Email. <BLANKLINE> How are you doing? <BLANKLINE> - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/cook-headers.txt b/Mailman/docs/cook-headers.txt index cb1b07de0..fd7a458c7 100644 --- a/Mailman/docs/cook-headers.txt +++ b/Mailman/docs/cook-headers.txt @@ -292,13 +292,3 @@ List-Archive header either. List-Unsubscribe: <http://lists.example.com/listinfo/_xtest@example.com>, <mailto:_xtest-leave@example.com> ---end--- - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/membership.txt b/Mailman/docs/membership.txt index 9b6465d4a..1182030ed 100644 --- a/Mailman/docs/membership.txt +++ b/Mailman/docs/membership.txt @@ -211,30 +211,3 @@ is returned. None >>> print mlist.members.get_member('zperson@example.com') None - - -Clean up --------- - - >>> for member in mlist.members.members: - ... member.unsubscribe() - >>> for admin in mlist.administrators.members: - ... admin.unsubscribe() - >>> flush() - >>> list(mlist.members.members) - [] - >>> list(mlist.administrators.members) - [] - >>> for user in config.user_manager.users: - ... config.user_manager.delete_user(user) - >>> for address in config.user_manager.addresses: - ... config.user_manager.delete_address(address) - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.user_manager.users) - [] - >>> list(config.user_manager.addresses) - [] - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/mlist-addresses.txt b/Mailman/docs/mlist-addresses.txt index 257cf95c7..be9c76787 100644 --- a/Mailman/docs/mlist-addresses.txt +++ b/Mailman/docs/mlist-addresses.txt @@ -6,7 +6,9 @@ These are defined in the IMailingListAddresses interface. >>> from Mailman.configuration import config >>> from Mailman.interfaces import IMailingListAddresses + >>> from Mailman.database import flush >>> mlist = config.list_manager.create('_xtest@example.com') + >>> flush() >>> IMailingListAddresses.providedBy(mlist) True @@ -76,10 +78,3 @@ dependent on the VERP_CONFIRM_FORMAT configuration variable. >>> mlist.confirm_address('cookie') '_xtest-confirm---cookie@example.com' >>> config.VERP_CONFIRM_FORMAT = old_format - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) diff --git a/Mailman/docs/reply-to.txt b/Mailman/docs/reply-to.txt index 43f2fcc06..c6b06a390 100644 --- a/Mailman/docs/reply-to.txt +++ b/Mailman/docs/reply-to.txt @@ -136,13 +136,3 @@ And as before, it's possible to either strip any existing Reply-To header... 1 >>> msg['reply-to'] 'my-list@example.com, bperson@example.com' - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/replybot.txt b/Mailman/docs/replybot.txt index 5315eba70..b30f85d4f 100644 --- a/Mailman/docs/replybot.txt +++ b/Mailman/docs/replybot.txt @@ -219,12 +219,3 @@ be sent. This is so as not to bombard the sender with responses. The grace period is measured in days. XXX Add grace period tests. - - -Clean up --------- - - >>> config.list_manager.delete(mlist) - >>> flush() - >>> [name for name in config.list_manager.names] - [] diff --git a/Mailman/docs/subject-munging.txt b/Mailman/docs/subject-munging.txt index 921efc889..e74da47d6 100644 --- a/Mailman/docs/subject-munging.txt +++ b/Mailman/docs/subject-munging.txt @@ -250,13 +250,3 @@ And again, with an RFC 2047 encoded header. # to get Tokio to look at this. # >>> print msg['subject'] # [XTest] =?iso-2022-jp?b?IBskQiVhITwlayVeJXMbKEI=?= - - -Clean up --------- - - >>> for mlist in config.list_manager.mailing_lists: - ... config.list_manager.delete(mlist) - >>> flush() - >>> list(config.list_manager.mailing_lists) - [] diff --git a/Mailman/docs/usermanager.txt b/Mailman/docs/usermanager.txt index 1f863b606..4fd12bf59 100644 --- a/Mailman/docs/usermanager.txt +++ b/Mailman/docs/usermanager.txt @@ -132,13 +132,3 @@ with it, you will get None back. >>> flush() >>> print mgr.get_user(address.address) None - - -Clean up --------- - - >>> for user in mgr.users: - ... mgr.delete_user(user) - >>> flush() - >>> list(mgr.users) - [] diff --git a/Mailman/docs/users.txt b/Mailman/docs/users.txt index 2b60ed0bc..3dc6d11f2 100644 --- a/Mailman/docs/users.txt +++ b/Mailman/docs/users.txt @@ -152,13 +152,3 @@ Some of these preferences are booleans and they can be set to True or False. receive_list_copy : False receive_own_postings : False delivery_mode : DeliveryMode.regular - - -Clean up --------- - - >>> for user in mgr.users: - ... mgr.delete_user(user) - >>> flush() - >>> sorted(mgr.users) - [] diff --git a/Mailman/testing/base.py b/Mailman/testing/base.py index 562443b1e..c3f64554a 100644 --- a/Mailman/testing/base.py +++ b/Mailman/testing/base.py @@ -24,6 +24,7 @@ import pwd import sys import stat import shutil +import doctest import difflib import tempfile import unittest @@ -35,9 +36,11 @@ from Mailman import MailList from Mailman import Utils from Mailman.bin import rmlist from Mailman.configuration import config +from Mailman.database import flush from Mailman.database.dbcontext import dbcontext NL = '\n' +COMMASPACE = ', ' @@ -79,3 +82,34 @@ class TestBase(unittest.TestCase): path = os.path.join(config.LOCK_DIR, filename) print >> sys.stderr, '@@@@@ removing:', path os.unlink(path) + + + +def cleaning_teardown(testobj): + for user in config.user_manager.users: + config.user_manager.delete_user(user) + for address in config.user_manager.addresses: + config.user_manager.delete_address(address) + for mlist in config.list_manager.mailing_lists: + for member in mlist.members.members: + member.unsubscribe() + for admin in mlist.administrators.members: + admin.unsubscribe() + config.list_manager.delete(mlist) + flush() + assert not list(config.list_manager.mailing_lists), ( + 'There should be no mailing lists left: %s' % + COMMASPACE.join(sorted(config.list_manager.names))) + assert not list(config.user_manager.users), ( + 'There should be no users left!') + assert not list(config.user_manager.addresses), ( + 'There should be no addresses left!') + + +def make_docfile_suite(path): + return doctest.DocFileSuite( + path, + optionflags=(doctest.ELLIPSIS + | doctest.NORMALIZE_WHITESPACE + | doctest.REPORT_NDIFF), + tearDown=cleaning_teardown) diff --git a/Mailman/testing/test_acknowledge.py b/Mailman/testing/test_acknowledge.py index a40d0c9e4..605c6edda 100644 --- a/Mailman/testing/test_acknowledge.py +++ b/Mailman/testing/test_acknowledge.py @@ -17,16 +17,11 @@ """Doctest harness for testing message acknowledgment.""" -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/acknowledge.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/acknowledge.txt')) return suite diff --git a/Mailman/testing/test_address.py b/Mailman/testing/test_address.py index a04b3e795..d66292c55 100644 --- a/Mailman/testing/test_address.py +++ b/Mailman/testing/test_address.py @@ -17,14 +17,11 @@ """Doctest harness for testing IAddress interface.""" -import doctest import unittest - -options = doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/addresses.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/addresses.txt')) return suite diff --git a/Mailman/testing/test_after_delivery.py b/Mailman/testing/test_after_delivery.py index ea4801b39..a7d0f01f4 100644 --- a/Mailman/testing/test_after_delivery.py +++ b/Mailman/testing/test_after_delivery.py @@ -17,16 +17,12 @@ """Doctest harness for testing bookkeeping done after message delivery.""" -import doctest import unittest -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/after-delivery.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/after-delivery.txt')) return suite diff --git a/Mailman/testing/test_avoid_duplicates.py b/Mailman/testing/test_avoid_duplicates.py index 96599f1ed..b5de721e6 100644 --- a/Mailman/testing/test_avoid_duplicates.py +++ b/Mailman/testing/test_avoid_duplicates.py @@ -17,17 +17,11 @@ """Doctest harness for the AvoidDuplicates handler.""" -import os -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/avoid-duplicates.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/avoid-duplicates.txt')) return suite diff --git a/Mailman/testing/test_calc_recips.py b/Mailman/testing/test_calc_recips.py index 7e876d428..da3929b65 100644 --- a/Mailman/testing/test_calc_recips.py +++ b/Mailman/testing/test_calc_recips.py @@ -17,16 +17,11 @@ """Doctest harness for testing the recipient calculation handler.""" -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/calc-recips.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/calc-recips.txt')) return suite diff --git a/Mailman/testing/test_cleanse.py b/Mailman/testing/test_cleanse.py index 97ad9c46c..e058c7bfa 100644 --- a/Mailman/testing/test_cleanse.py +++ b/Mailman/testing/test_cleanse.py @@ -17,16 +17,11 @@ """Doctest harness for the Cleanse handler.""" -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/cleanse.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/cleanse.txt')) return suite diff --git a/Mailman/testing/test_cook_headers.py b/Mailman/testing/test_cook_headers.py index ec8997858..dd141aab9 100644 --- a/Mailman/testing/test_cook_headers.py +++ b/Mailman/testing/test_cook_headers.py @@ -18,12 +18,9 @@ """Doctest harness for the CookHeaders handler.""" import os -import doctest import unittest -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): @@ -31,5 +28,5 @@ def test_suite(): for filename in ('ack-headers', 'cook-headers', 'subject-munging', 'reply-to'): path = os.path.join('..', 'docs', filename + '.txt') - suite.addTest(doctest.DocFileSuite(path, optionflags=options)) + suite.addTest(make_docfile_suite(path)) return suite diff --git a/Mailman/testing/test_decorate.py b/Mailman/testing/test_decorate.py index 23af0598c..1bbe84250 100644 --- a/Mailman/testing/test_decorate.py +++ b/Mailman/testing/test_decorate.py @@ -17,16 +17,11 @@ """Doctest harness for testing message decoration.""" -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/decorate.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/decorate.txt')) return suite diff --git a/Mailman/testing/test_listmanager.py b/Mailman/testing/test_listmanager.py index 165018fa6..e6e9d6a3b 100644 --- a/Mailman/testing/test_listmanager.py +++ b/Mailman/testing/test_listmanager.py @@ -17,12 +17,11 @@ """Doctest harness for testing mailing list creation and deletion.""" -import doctest import unittest +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/listmanager.txt', - optionflags=doctest.ELLIPSIS)) + suite.addTest(make_docfile_suite('../docs/listmanager.txt')) return suite diff --git a/Mailman/testing/test_membership.py b/Mailman/testing/test_membership.py index 8a25287ac..810a2fed9 100644 --- a/Mailman/testing/test_membership.py +++ b/Mailman/testing/test_membership.py @@ -19,7 +19,6 @@ import os import time -import doctest import unittest from Mailman import MailList @@ -29,9 +28,7 @@ from Mailman import passwords from Mailman.Errors import NotAMemberError from Mailman.UserDesc import UserDesc from Mailman.configuration import config -from Mailman.testing.base import TestBase - -OPTIONFLAGS = doctest.ELLIPSIS | doctest.NORMALIZE_WHITESPACE +from Mailman.testing.base import TestBase, make_docfile_suite @@ -390,6 +387,5 @@ class TestMembers(TestBase): def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/membership.txt', - optionflags=OPTIONFLAGS)) + suite.addTest(make_docfile_suite('../docs/membership.txt')) return suite diff --git a/Mailman/testing/test_mlist_addresses.py b/Mailman/testing/test_mlist_addresses.py index fe32c12b2..1998f33ee 100644 --- a/Mailman/testing/test_mlist_addresses.py +++ b/Mailman/testing/test_mlist_addresses.py @@ -17,12 +17,11 @@ """Doctest harness for the IMailingListAddresses interface.""" -import doctest import unittest +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/mlist-addresses.txt', - optionflags=doctest.ELLIPSIS)) + suite.addTest(make_docfile_suite('../docs/mlist-addresses.txt')) return suite diff --git a/Mailman/testing/test_replybot.py b/Mailman/testing/test_replybot.py index 6b371c9d0..9f5d454a6 100644 --- a/Mailman/testing/test_replybot.py +++ b/Mailman/testing/test_replybot.py @@ -17,16 +17,11 @@ """Doctest harness for testing the replybot handler.""" -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/replybot.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/replybot.txt')) return suite diff --git a/Mailman/testing/test_user.py b/Mailman/testing/test_user.py index 59b686795..b66efac62 100644 --- a/Mailman/testing/test_user.py +++ b/Mailman/testing/test_user.py @@ -17,16 +17,11 @@ """Doctest harness for testing users.""" -import doctest import unittest - -options = (doctest.ELLIPSIS - | doctest.NORMALIZE_WHITESPACE - | doctest.REPORT_NDIFF) +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/users.txt', - optionflags=options)) + suite.addTest(make_docfile_suite('../docs/users.txt')) return suite diff --git a/Mailman/testing/test_usermanager.py b/Mailman/testing/test_usermanager.py index fa115728e..9b98a6689 100644 --- a/Mailman/testing/test_usermanager.py +++ b/Mailman/testing/test_usermanager.py @@ -17,12 +17,11 @@ """Doctest harness for testing mailing list creation and deletion.""" -import doctest import unittest +from Mailman.testing.base import make_docfile_suite def test_suite(): suite = unittest.TestSuite() - suite.addTest(doctest.DocFileSuite('../docs/usermanager.txt', - optionflags=doctest.ELLIPSIS)) + suite.addTest(make_docfile_suite('../docs/usermanager.txt')) return suite |
