mailpipe: skip `.gitignore` files in Maildir mailboxes.
authorW. Trevor King <wking@tremily.us>
Sun, 2 Sep 2012 12:38:13 +0000 (08:38 -0400)
committerW. Trevor King <wking@tremily.us>
Sun, 2 Sep 2012 12:38:13 +0000 (08:38 -0400)
I use empty `.gitignore` files so Git will create the
`test/mail-in/new` and `test/mail-in/tmp` directories on checkout, but
the Maildir mailbox thinks they are messages.  Since the files are
*not* messages, skip them when constucting the Maildir message list.

I don't foresee any side effects from this (it's an odd filename for
real Maildir delivery), but I log the skipped filenames just in case.

pygrader/mailpipe.py

index 6a42eae380d5e70a9db32f0680ae85adaaaedffc..b2542735286ff7add8bfd294be04194cb7edff46 100644 (file)
@@ -621,7 +621,13 @@ def _load_messages(course, stream, mailbox=None, input_=None, output=None,
             ombox = _mailbox.mbox(output, factory=None, create=True)
     elif mailbox == 'maildir':
         mbox = _mailbox.Maildir(input_, factory=None, create=False)
-        messages = mbox.items()
+        messages = []
+        for key,msg in mbox.items():
+            subpath = mbox._lookup(key)
+            if subpath.endswith('.gitignore'):
+                _LOG.debug('skipping non-message {}'.format(subpath))
+                continue
+            messages.append((key, msg))
         if output is not None:
             ombox = _mailbox.Maildir(output, factory=None, create=True)
     else: