"""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'):
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:
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()
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)