Code

issue2550678: Allow pagesize=-1 which returns all results.
[roundup.git] / test / test_mailsplit.py
index 41ab9885f21d34b9b41912e9107d74a1cd6d75ff..9c960df4357255621095bb4ea79a3a214ac781b1 100644 (file)
@@ -1,4 +1,21 @@
-# $Id: test_mailsplit.py,v 1.2 2001-08-03 07:23:09 richard Exp $
+#
+# Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
+# This module is free software, and you may redistribute it and/or modify
+# under the same terms as Python, so long as this copyright message and
+# disclaimer are retained in their original form.
+#
+# IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
+# DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
+# OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
+# BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
+# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
+# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+# 
+# $Id: test_mailsplit.py,v 1.15 2003-10-25 22:53:26 richard Exp $
 
 import unittest, cStringIO
 
@@ -27,10 +44,10 @@ issue_tracker@foo.com wrote:
 blah blah blah signature
 userfoo@foo.com
 '''
-        summary, content = parseContent(s)
-        print '\n====\n', summary
-        print '====', content
-        print '===='
+        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 = '''
@@ -57,35 +74,166 @@ blah blah blah blah blah blah blah blah blah blah blah!
 blah blah blah signature
 userfoo@foo.com
 '''
-        summary, content = parseContent(s)
-        print '\n====\n', summary
-        print '====', content
-        print '===='
+        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)
-        print '\n====\n', summary
-        print '====', content
-        print '===='
+        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)
-        print '\n====\n', summary
-        print '====', content
-        print '===='
+        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.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