From f1f34ca46e9ea81e85d6728cb7c74cb815860cca Mon Sep 17 00:00:00 2001 From: Nikolaus Schulz Date: Sat, 31 Jul 2010 15:35:31 +0200 Subject: [PATCH] Don't create hidden archives when archiving mailboxes with leading dots in the name When archiving a mailbox with leading dots in the name and no archive name prefix specified, strip the dots off the archive name. This is targeting Maildir++ subfolders. --- CHANGELOG | 5 +++++ archivemail | 3 +++ test_archivemail | 22 ++++++++++++++++++++++ 3 files changed, 30 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index ecd6b59..3615e64 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -59,6 +59,11 @@ Version 0.8.0 - UNRELEASED strftime(). Specifying this option disables the default archive name suffix. Obsoletes: feature request #604281. (Thanks Serafeim Zanikolas for an initial patch) + * When archiving a mailbox with a leading dot in the name and with no archive + name prefix specified, archivemail no longer creates hidden archives, but + strips the dot off the archive name. In particular, this makes working + with Maildir++ subfolders more convenient. Closes: feature request + #604281. Version 0.7.2 - 9 November 2007 diff --git a/archivemail b/archivemail index 2ca862f..92faa2a 100755 --- a/archivemail +++ b/archivemail @@ -1649,6 +1649,9 @@ def make_archive_name(mailbox_name): archive_base = mailbox_name.rsplit('/', 1)[-1] else: archive_dir, archive_base = os.path.split(mailbox_name) + if not prefix: + # Don't create hidden archives, e.g. when processing Maildir++ subfolders + archive_base = archive_base.lstrip('.') if options.output_dir: archive_dir = options.output_dir archive_name = os.path.join(archive_dir, prefix + archive_base + suffix) diff --git a/test_archivemail b/test_archivemail index 3bc278a..9d015cc 100755 --- a/test_archivemail +++ b/test_archivemail @@ -968,6 +968,28 @@ class TestArchiveAffixes(unittest.TestCase): archivemail.options.archive_suffix = None archivemail.options.quiet = False +class TestArchiveHiddenMbox(unittest.TestCase): + def setUp(self): + archivemail.options.quiet = True + self.mbox = ".upper.lower" + + def testHiddenMbox(self): + """leading dots are stripped from the archive name when no prefix is added""" + self.assertEqual(archivemail.make_archive_name(self.mbox), + self.mbox.lstrip('.') + + archivemail.options.archive_default_suffix) + + def testHiddenMboxPrefixedArchive(self): + """no dots are stripped from the archive name when a prefix is added""" + prefix = ".hidden_" + archivemail.options.archive_prefix = prefix + self.assertEqual(archivemail.make_archive_name(self.mbox), + prefix + self.mbox) + + def tearDown(self): + archivemail.options.quiet = False + archivemail.options.archive_prefix = None + class TestArchiveDryRun(TestArchive): """make sure the 'dry-run' option works""" def setUp(self):