Improve test suite and add test
1) Add helper functions to create and count maildirs and mails. 2) Add a second test that creates 2 maildirs, one of the including a quotation sign " in its folder name and sync. Signed-off-by: Sebastian Spaeth <Sebastian@SSpaeth.de>
This commit is contained in:
@ -99,8 +99,34 @@ class OLITestLib():
|
||||
return (e.returncode, e.output)
|
||||
return (0, output)
|
||||
|
||||
class OLITextTestRunner(unittest.TextTestRunner):
|
||||
@classmethod
|
||||
def create_maildir(cls, folder):
|
||||
"""Create empty maildir 'folder' in our test maildir
|
||||
|
||||
def __init__(self,*args, **kwargs):
|
||||
logging.warning("OfflineImap testsuite")
|
||||
return super(OLITextTestRunner, self).__init__(*args, **kwargs)
|
||||
Does not fail if it already exists"""
|
||||
assert cls.testdir != None
|
||||
maildir = os.path.join(cls.testdir, 'mail', folder)
|
||||
for subdir in ('','tmp','cur','new'):
|
||||
try:
|
||||
os.mkdir(os.path.join(maildir, subdir))
|
||||
except OSError as e:
|
||||
if e.errno != 17: # 'already exists' is ok.
|
||||
raise
|
||||
|
||||
@classmethod
|
||||
def count_maildir_mails(cls, folder):
|
||||
"""Returns the number of mails in maildir 'folder'
|
||||
|
||||
Counting only those in cur&new (ignoring tmp)."""
|
||||
assert cls.testdir != None
|
||||
maildir = os.path.join(cls.testdir, 'mail', folder)
|
||||
|
||||
boxes, mails = 0, 0
|
||||
for dirpath, dirs, files in os.walk(maildir, False):
|
||||
if set(dirs) == set(['cur', 'new', 'tmp']):
|
||||
# New maildir folder
|
||||
boxes += 1
|
||||
#raise RuntimeError("%s is not Maildir" % maildir)
|
||||
if dirpath.endswith(('/cur', '/new')):
|
||||
mails += len(files)
|
||||
return boxes, mails
|
||||
|
@ -15,7 +15,7 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
__all__ = ['OLITestLib', 'OLITextTestRunner','TestLoader']
|
||||
__all__ = ['OLITestLib', 'TextTestRunner','TestLoader']
|
||||
|
||||
__productname__ = 'OfflineIMAP Test suite'
|
||||
__version__ = '0'
|
||||
@ -29,6 +29,6 @@ banner = """%(__productname__)s %(__version__)s
|
||||
%(__license__)s""" % locals()
|
||||
|
||||
import unittest
|
||||
from unittest import TestLoader
|
||||
from unittest import TestLoader, TextTestRunner
|
||||
from globals import default_conf
|
||||
from TestRunner import OLITestLib, OLITextTestRunner
|
||||
from TestRunner import OLITestLib
|
||||
|
@ -33,5 +33,5 @@ localfolders =
|
||||
|
||||
[Repository IMAP]
|
||||
type=IMAP
|
||||
folderfilter= lambda f: f.startswith('OLItest')
|
||||
folderfilter= lambda f: f.startswith('INBOX.OLItest')
|
||||
""")
|
||||
|
Reference in New Issue
Block a user