Code

PGP support is again working (pyme API has changed significantly) and we
[roundup.git] / test / test_mailsplit.py
index 9b0a924aa576f7774ddf366c021abbb90ac3661f..9c960df4357255621095bb4ea79a3a214ac781b1 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: test_mailsplit.py,v 1.5 2001-08-07 00:24:43 richard Exp $
+# $Id: test_mailsplit.py,v 1.15 2003-10-25 22:53:26 richard Exp $
 
 import unittest, cStringIO
 
@@ -44,10 +44,11 @@ issue_tracker@foo.com wrote:
 blah blah blah signature
 userfoo@foo.com
 '''
-        summary, content = parseContent(s)
+        summary, content = parseContent(s, 0, 0)
         self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
         self.assertEqual(content, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah\nblah blah blah blah blah blah blah blah blah blah blah!')
 
+
     def testPostComment(self):
         s = '''
 issue_tracker@foo.com wrote:
@@ -73,42 +74,166 @@ blah blah blah blah blah blah blah blah blah blah blah!
 blah blah blah signature
 userfoo@foo.com
 '''
-        summary, content = parseContent(s)
+        summary, content = parseContent(s, 0, 0)
         self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
         self.assertEqual(content, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah\nblah blah blah blah blah blah blah blah blah blah blah!')
 
+
+    def testKeepCitation(self):
+        s = '''
+blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah!
+
+issue_tracker@foo.com wrote:
+> blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
+> blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
+> blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
+> blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
+>
+> -------
+> nosy: userfoo, userken
+> _________________________________________________
+> Roundup issue tracker
+> issue_tracker@foo.com
+> http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
+
+--
+blah blah blah signature
+userfoo@foo.com
+'''
+        summary, content = parseContent(s, 1, 0)
+        self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
+        self.assertEqual(content, '''\
+blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah!
+
+issue_tracker@foo.com wrote:
+> blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
+> blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
+> blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
+> blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
+>
+> -------
+> nosy: userfoo, userken
+> _________________________________________________
+> Roundup issue tracker
+> issue_tracker@foo.com
+> http://foo.com/cgi-bin/roundup.cgi/issue_tracker/''')
+
+
+    def testKeepBody(self):
+        s = '''
+blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah!
+
+issue_tracker@foo.com wrote:
+> blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
+> blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
+> blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
+> blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
+>
+> -------
+> nosy: userfoo, userken
+> _________________________________________________
+> Roundup issue tracker
+> issue_tracker@foo.com
+> http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
+
+--
+blah blah blah signature
+userfoo@foo.com
+'''
+        summary, content = parseContent(s, 0, 1)
+        self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
+        self.assertEqual(content, '''
+blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
+blah blah blah blah blah blah blah blah blah blah blah!
+
+issue_tracker@foo.com wrote:
+> blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
+> blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
+> blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
+> blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
+>
+> -------
+> nosy: userfoo, userken
+> _________________________________________________
+> Roundup issue tracker
+> issue_tracker@foo.com
+> http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
+
+--
+blah blah blah signature
+userfoo@foo.com
+''')
+
+    def testAllQuoted(self):
+        s = '\nissue_tracker@foo.com wrote:\n> testing\n'
+        summary, content = parseContent(s, 0, 1)
+        self.assertEqual(summary, '')
+        self.assertEqual(content, s)
+
     def testSimple(self):
         s = '''testing'''
-        summary, content = parseContent(s)
+        summary, content = parseContent(s, 0, 0)
         self.assertEqual(summary, 'testing')
         self.assertEqual(content, 'testing')
 
+    def testParagraphs(self):
+        s = '''testing\n\ntesting\n\ntesting'''
+        summary, content = parseContent(s, 0, 0)
+        self.assertEqual(summary, 'testing')
+        self.assertEqual(content, 'testing\n\ntesting\n\ntesting')
+
+    def testSimpleFollowup(self):
+        s = '''>hello\ntesting'''
+        summary, content = parseContent(s, 0, 0)
+        self.assertEqual(summary, 'testing')
+        self.assertEqual(content, 'testing')
+
+    def testSimpleFollowupParas(self):
+        s = '''>hello\ntesting\n\ntesting\n\ntesting'''
+        summary, content = parseContent(s, 0, 0)
+        self.assertEqual(summary, 'testing')
+        self.assertEqual(content, 'testing\n\ntesting\n\ntesting')
+
     def testEmpty(self):
         s = ''
-        summary, content = parseContent(s)
+        summary, content = parseContent(s, 0, 0)
         self.assertEqual(summary, '')
         self.assertEqual(content, '')
 
-def suite():
-   return unittest.makeSuite(MailsplitTestCase, 'test')
+    def testIndentationSummary(self):
+        s = '    Four space indent.\n\n    Four space indent.\nNo indent.'
+        summary, content = parseContent(s, 0, 0)
+        self.assertEqual(summary, '    Four space indent.')
 
+    def testIndentationContent(self):
+        s = '    Four space indent.\n\n    Four space indent.\nNo indent.'
+        summary, content = parseContent(s, 0, 0)
+        self.assertEqual(content, s)
+
+    def testMultilineSummary(self):
+        s = 'This is a long sentence that would normally\nbe split. More words.'
+        summary, content = parseContent(s, 0, 0)
+        self.assertEqual(summary, 'This is a long sentence that would '
+            'normally\nbe split.')
+
+    def testKeepMultipleHyphens(self):
+        body = '''Testing, testing.
+
+----
+Testing, testing.'''
+        summary, content = parseContent(body, 1, 0)
+        self.assertEqual(body, content)
+
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(MailsplitTestCase))
+    return suite
+
+if __name__ == '__main__':
+    runner = unittest.TextTestRunner()
+    unittest.main(testRunner=runner)
 
-#
-# $Log: not supported by cvs2svn $
-# Revision 1.4  2001/08/07 00:15:51  richard
-# Added the copyright/license notice to (nearly) all files at request of
-# Bizar Software.
-#
-# Revision 1.3  2001/08/05 07:06:25  richard
-# removed some print statements
-#
-# Revision 1.2  2001/08/03 07:23:09  richard
-# er, removed the innocent from the the code :)
-#
-# Revision 1.1  2001/08/03 07:18:22  richard
-# Implemented correct mail splitting (was taking a shortcut). Added unit
-# tests. Also snips signatures now too.
-#
-#
-#
 # vim: set filetype=python ts=4 sw=4 et si