summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew M. Kuchling <amk@amk.ca>2007-01-22 20:26:40 +0000
committerAndrew M. Kuchling <amk@amk.ca>2007-01-22 20:26:40 +0000
commitb6b6f35f2b4227a0cae7746cefa92798ffbd33fc (patch)
treec720aeb83c5a92d85690075ce1a70832c2282130
parente558c1538131c190a1d5defaf763e2e80f230264 (diff)
downloadcpython-b6b6f35f2b4227a0cae7746cefa92798ffbd33fc.tar.gz
Improve pattern used for mbox 'From' lines; add a simple test
-rwxr-xr-xLib/mailbox.py6
-rw-r--r--Lib/test/test_old_mailbox.py35
2 files changed, 38 insertions, 3 deletions
diff --git a/Lib/mailbox.py b/Lib/mailbox.py
index f8d4df3d97..17e062ed21 100755
--- a/Lib/mailbox.py
+++ b/Lib/mailbox.py
@@ -1995,8 +1995,10 @@ class UnixMailbox(_Mailbox):
# necessary. For convenience, we've added a PortableUnixMailbox class
# which uses the more lenient _fromlinepattern regular expression.
- _fromlinepattern = r"From \s*[^\s]+\s+\w\w\w\s+\w\w\w\s+\d?\d\s+" \
- r"\d?\d:\d\d(:\d\d)?(\s+[^\s]+)?\s+\d\d\d\d\s*$"
+ _fromlinepattern = (r"From \s*[^\s]+\s+\w\w\w\s+\w\w\w\s+\d?\d\s+"
+ r"\d?\d:\d\d(:\d\d)?(\s+[^\s]+)?\s+\d\d\d\d\s*"
+ r"[^\s]*\s*"
+ "$")
_regexp = None
def _strict_isrealfromline(self, line):
diff --git a/Lib/test/test_old_mailbox.py b/Lib/test/test_old_mailbox.py
index cca6897961..c8f6bac64b 100644
--- a/Lib/test/test_old_mailbox.py
+++ b/Lib/test/test_old_mailbox.py
@@ -109,11 +109,44 @@ class MaildirTestCase(unittest.TestCase):
self.assertEqual(len(str(msg)), len(FROM_)+len(DUMMY_MESSAGE))
self.assertEqual(n, 1)
+class MboxTestCase(unittest.TestCase):
+ def setUp(self):
+ # create a new maildir mailbox to work with:
+ self._path = test_support.TESTFN
+
+ def tearDown(self):
+ os.unlink(self._path)
+
+ def test_from_regex (self):
+ # Testing new regex from bug #1633678
+ f = open(self._path, 'w')
+ f.write("""From fred@example.com Mon May 31 13:24:50 2004 +0200
+Subject: message 1
+
+body1
+From fred@example.com Mon May 31 13:24:50 2004 -0200
+Subject: message 2
+
+body2
+From fred@example.com Mon May 31 13:24:50 2004
+Subject: message 3
+
+body3
+From fred@example.com Mon May 31 13:24:50 2004
+Subject: message 4
+
+body4
+""")
+ f.close()
+ box = mailbox.UnixMailbox(open(self._path, 'r'))
+ self.assert_(len(list(iter(box))) == 4)
+
+
# XXX We still need more tests!
def test_main():
- test_support.run_unittest(MaildirTestCase)
+ test_support.run_unittest(MaildirTestCase, MboxTestCase)
if __name__ == "__main__":