From 67f23e1af4a9adc43aea08790c4d3b349c75297d Mon Sep 17 00:00:00 2001 From: Nikolaus Schulz Date: Sat, 31 Jul 2010 14:58:50 +0200 Subject: [PATCH] Only use the default archive name suffix when the user specified no affix Also add more archive name affix testing to the test suite. --- archivemail | 14 +++++++++----- test_archivemail | 39 ++++++++++++++++++++++++++++++++------- 2 files changed, 41 insertions(+), 12 deletions(-) diff --git a/archivemail b/archivemail index 0ace88a..2ca862f 100755 --- a/archivemail +++ b/archivemail @@ -172,7 +172,8 @@ class StaleFiles: class Options: """Class to store runtime options, including defaults""" archive_prefix = None - archive_suffix = "_archive" + archive_suffix = None + archive_default_suffix = "_archive" days_old_max = 180 date_old_max = None delete_old_mail = False @@ -1636,10 +1637,13 @@ def make_archive_name(mailbox_name): else: tm = time.localtime(options.date_old_max) prefix = suffix = "" - if options.archive_prefix: - prefix = time.strftime(options.archive_prefix, tm) - if options.archive_suffix: - suffix = time.strftime(options.archive_suffix, tm) + if options.archive_prefix is None and options.archive_suffix is None: + suffix = options.archive_default_suffix + else: + if options.archive_prefix: + prefix = time.strftime(options.archive_prefix, tm) + if options.archive_suffix: + suffix = time.strftime(options.archive_suffix, tm) if re.match(r'imaps?://', mailbox_name.lower()): archive_dir = "" archive_base = mailbox_name.rsplit('/', 1)[-1] diff --git a/test_archivemail b/test_archivemail index 406a3b4..3bc278a 100755 --- a/test_archivemail +++ b/test_archivemail @@ -897,7 +897,6 @@ class TestArchiveMboxPreserveUnread(unittest.TestCase): class TestArchiveMboxSuffix(unittest.TestCase): """make sure the 'suffix' option works""" def setUp(self): - self.old_suffix = archivemail.options.archive_suffix archivemail.options.quiet = True def testSuffix(self): @@ -915,14 +914,11 @@ class TestArchiveMboxSuffix(unittest.TestCase): def tearDown(self): archivemail.options.quiet = False - archivemail.options.archive_suffix = self.old_suffix + archivemail.options.archive_suffix = None class TestArchiveMboxPrefix(unittest.TestCase): """make sure the 'prefix' option works""" def setUp(self): - self.old_prefix = archivemail.options.archive_prefix - self.old_suffix = archivemail.options.archive_suffix - archivemail.options.archive_suffix = "" archivemail.options.quiet = True def testPrefix(self): @@ -940,8 +936,37 @@ class TestArchiveMboxPrefix(unittest.TestCase): def tearDown(self): archivemail.options.quiet = False - archivemail.options.archive_prefix = self.old_prefix - archivemail.options.archive_suffix = self.old_suffix + archivemail.options.archive_prefix = None + +class TestArchiveAffixes(unittest.TestCase): + def setUp(self): + self.mbox = "harbsch" + self.archive_prefix = "wurbl+" + self.archive_suffix = "+schronk&borsz" + archivemail.options.quiet = True + + def testDefaultPrefix(self): + """if no archive name affix is specified, the default archive suffix is appended""" + self.assertEqual(archivemail.make_archive_name(self.mbox), + self.mbox + archivemail.options.archive_default_suffix) + + def testPrefixKillsDefaultSuffix(self): + """if an archive name prefix is specified, the default archive suffix is not appended""" + archivemail.options.archive_prefix = self.archive_prefix + self.assertEqual(archivemail.make_archive_name(self.mbox), + self.archive_prefix + self.mbox) + + def testPrefixAndSuffix(self): + """specifying both an archive name prefix and suffix works""" + archivemail.options.archive_prefix = self.archive_prefix + archivemail.options.archive_suffix = self.archive_suffix + self.assertEqual(archivemail.make_archive_name(self.mbox), + self.archive_prefix + self.mbox + self.archive_suffix) + + def tearDown(self): + archivemail.options.archive_prefix = None + archivemail.options.archive_suffix = None + archivemail.options.quiet = False class TestArchiveDryRun(TestArchive): """make sure the 'dry-run' option works"""