# Copyright (C) 2001-2003 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
"""Test base class which handles creating and deleting a test list.
"""
import os
import shutil
import difflib
import unittest
from cStringIO import StringIO
from Mailman import MailList
from Mailman import Utils
from Mailman import mm_cfg
NL = '\n'
class TestBase(unittest.TestCase):
if hasattr(difflib, 'ndiff'):
# Python 2.2 and beyond
def ndiffAssertEqual(self, first, second):
"""Like failUnlessEqual except use ndiff for readable output."""
if first <> second:
sfirst = str(first)
ssecond = str(second)
diff = difflib.ndiff(sfirst.splitlines(), ssecond.splitlines())
fp = StringIO()
print >> fp, NL, NL.join(diff)
raise self.failureException, fp.getvalue()
else:
# Python 2.1
ndiffAssertEqual = unittest.TestCase.assertEqual
def setUp(self):
mlist = MailList.MailList()
mlist.Create('_xtest', 'test@dom.ain', 'xxxxx')
mlist.host_name = 'dom.ain'
mlist.web_page_url = 'http://www.dom.ain/mailman/'
mlist.Save()
# This leaves the list in a locked state
self._mlist = mlist
def tearDown(self):
self._mlist.Unlock()
listname = self._mlist.internal_name()
for dirtmpl in ['lists/%s',
'archives/private/%s',
'archives/private/%s.mbox',
'archives/public/%s',
'archives/public/%s.mbox',
]:
dir = os.path.join(mm_cfg.VAR_PREFIX, dirtmpl % listname)
if os.path.islink(dir):
os.unlink(dir)
elif os.path.isdir(dir):
shutil.rmtree(dir)