diff options
author | Andrew M. Kuchling <amk@amk.ca> | 2007-01-22 20:26:40 +0000 |
---|---|---|
committer | Andrew M. Kuchling <amk@amk.ca> | 2007-01-22 20:26:40 +0000 |
commit | b6b6f35f2b4227a0cae7746cefa92798ffbd33fc (patch) | |
tree | c720aeb83c5a92d85690075ce1a70832c2282130 | |
parent | e558c1538131c190a1d5defaf763e2e80f230264 (diff) | |
download | cpython-b6b6f35f2b4227a0cae7746cefa92798ffbd33fc.tar.gz |
Improve pattern used for mbox 'From' lines; add a simple test
-rwxr-xr-x | Lib/mailbox.py | 6 | ||||
-rw-r--r-- | Lib/test/test_old_mailbox.py | 35 |
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__": |