summaryrefslogtreecommitdiff
path: root/Mailman/tests/test_documentation.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mailman/tests/test_documentation.py')
-rw-r--r--Mailman/tests/test_documentation.py78
1 files changed, 78 insertions, 0 deletions
diff --git a/Mailman/tests/test_documentation.py b/Mailman/tests/test_documentation.py
new file mode 100644
index 000000000..c5fb62302
--- /dev/null
+++ b/Mailman/tests/test_documentation.py
@@ -0,0 +1,78 @@
+# Copyright (C) 2007 by the Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+
+"""Harness for testing Mailman's documentation."""
+
+import os
+import doctest
+import unittest
+
+import Mailman
+from Mailman.configuration import config
+from Mailman.database import flush
+
+
+COMMASPACE = ', '
+
+
+
+def cleaning_teardown(testobj):
+ # Remove all users, addresses and members, then delete all mailing lists.
+ 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!')
+ # Remove all queue files.
+ for dirpath, dirnames, filenames in os.walk(config.QUEUE_DIR):
+ for filename in filenames:
+ os.remove(os.path.join(dirpath, filename))
+
+
+
+def test_suite():
+ suite = unittest.TestSuite()
+ docsdir = os.path.join(os.path.dirname(Mailman.__file__), 'docs')
+ # Under higher verbosity settings, report all doctest errors, not just the
+ # first one.
+ flags = (doctest.ELLIPSIS |
+ doctest.NORMALIZE_WHITESPACE |
+ doctest.REPORT_NDIFF)
+ if config.opts.verbosity <= 2:
+ flags |= doctest.REPORT_ONLY_FIRST_FAILURE
+ for filename in os.listdir(docsdir):
+ if os.path.splitext(filename)[1] == '.txt':
+ test = doctest.DocFileSuite(
+ 'docs/' + filename,
+ package=Mailman,
+ optionflags=flags,
+ tearDown=cleaning_teardown)
+ suite.addTest(test)
+ return suite