Code

Sorry, forgot to checkin modified unit tests for parse email bodies
[roundup.git] / test / test_mailsplit.py
1 #
2 # Copyright (c) 2001 Bizar Software Pty Ltd (http://www.bizarsoftware.com.au/)
3 # This module is free software, and you may redistribute it and/or modify
4 # under the same terms as Python, so long as this copyright message and
5 # disclaimer are retained in their original form.
6 #
7 # IN NO EVENT SHALL BIZAR SOFTWARE PTY LTD BE LIABLE TO ANY PARTY FOR
8 # DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING
9 # OUT OF THE USE OF THIS CODE, EVEN IF THE AUTHOR HAS BEEN ADVISED OF THE
10 # POSSIBILITY OF SUCH DAMAGE.
11 #
12 # BIZAR SOFTWARE PTY LTD SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING,
13 # BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
14 # FOR A PARTICULAR PURPOSE.  THE CODE PROVIDED HEREUNDER IS ON AN "AS IS"
15 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
16 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
17
18 # $Id: test_mailsplit.py,v 1.10 2002-04-23 16:18:18 rochecompaan Exp $
20 import unittest, cStringIO
22 from roundup.mailgw import parseContent
24 class MailsplitTestCase(unittest.TestCase):
25     def testPreComment(self):
26         s = '''
27 blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
28 blah blah blah blah blah blah blah blah blah blah blah!
30 issue_tracker@foo.com wrote:
31 > blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
32 > blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
33 > blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
34 > blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
35 >
36 > -------
37 > nosy: userfoo, userken
38 > _________________________________________________
39 > Roundup issue tracker
40 > issue_tracker@foo.com
41 > http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
43 --
44 blah blah blah signature
45 userfoo@foo.com
46 '''
47         summary, content = parseContent(s, 0, 0)
48         self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
49         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!')
52     def testPostComment(self):
53         s = '''
54 issue_tracker@foo.com wrote:
55 > blah blah blah blahblah blahblah blahblah blah blah blah blah blah
56 > blah
57 > blah blah blah blah blah blah blah blah blah?  blah blah blah blah
58 > blah
59 > blah blah blah blah blah blah blah...  blah blah blah blah.  blah
60 > blah
61 > blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
62 >
63 > -------
64 > nosy: userfoo, userken
65 > _________________________________________________
66 > Roundup issue tracker
67 > issue_tracker@foo.com
68 > http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
70 blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
71 blah blah blah blah blah blah blah blah blah blah blah!
73 --
74 blah blah blah signature
75 userfoo@foo.com
76 '''
77         summary, content = parseContent(s, 0, 0)
78         self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
79         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!')
82     def testKeepCitation(self):
83         s = '''
84 blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
85 blah blah blah blah blah blah blah blah blah blah blah!
87 issue_tracker@foo.com wrote:
88 > blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
89 > blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
90 > blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
91 > blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
92 >
93 > -------
94 > nosy: userfoo, userken
95 > _________________________________________________
96 > Roundup issue tracker
97 > issue_tracker@foo.com
98 > http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
100 --
101 blah blah blah signature
102 userfoo@foo.com
103 '''
104         summary, content = parseContent(s, 1, 0)
105         self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
106         self.assertEqual(content, '''\
107 blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
108 blah blah blah blah blah blah blah blah blah blah blah!
110 issue_tracker@foo.com wrote:
111 > blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
112 > blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
113 > blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
114 > blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
116 > -------
117 > nosy: userfoo, userken
118 > _________________________________________________
119 > Roundup issue tracker
120 > issue_tracker@foo.com
121 > http://foo.com/cgi-bin/roundup.cgi/issue_tracker/''')
124     def testKeepBody(self):
125         s = '''
126 blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
127 blah blah blah blah blah blah blah blah blah blah blah!
129 issue_tracker@foo.com wrote:
130 > blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
131 > blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
132 > blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
133 > blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
135 > -------
136 > nosy: userfoo, userken
137 > _________________________________________________
138 > Roundup issue tracker
139 > issue_tracker@foo.com
140 > http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
142 --
143 blah blah blah signature
144 userfoo@foo.com
145 '''
146         summary, content = parseContent(s, 0, 1)
147         self.assertEqual(summary, 'blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah')
148         self.assertEqual(content, '''
149 blah blah blah blah... blah blah? blah blah blah blah blah. blah blah blah
150 blah blah blah blah blah blah blah blah blah blah blah!
152 issue_tracker@foo.com wrote:
153 > blah blah blah blahblah blahblah blahblah blah blah blah blah blah blah
154 > blah blah blah blah blah blah blah blah blah?  blah blah blah blah blah
155 > blah blah blah blah blah blah blah...  blah blah blah blah.  blah blah
156 > blah blah blah blah?  blah blah blah blah blah blah!  blah blah!
158 > -------
159 > nosy: userfoo, userken
160 > _________________________________________________
161 > Roundup issue tracker
162 > issue_tracker@foo.com
163 > http://foo.com/cgi-bin/roundup.cgi/issue_tracker/
165 --
166 blah blah blah signature
167 userfoo@foo.com
168 ''')
171     def testSimple(self):
172         s = '''testing'''
173         summary, content = parseContent(s, 0, 0)
174         self.assertEqual(summary, 'testing')
175         self.assertEqual(content, 'testing')
177     def testParagraphs(self):
178         s = '''testing\n\ntesting\n\ntesting'''
179         summary, content = parseContent(s, 0, 0)
180         self.assertEqual(summary, 'testing')
181         self.assertEqual(content, 'testing\n\ntesting\n\ntesting')
183     def testSimpleFollowup(self):
184         s = '''>hello\ntesting'''
185         summary, content = parseContent(s, 0, 0)
186         self.assertEqual(summary, 'testing')
187         self.assertEqual(content, 'testing')
189     def testSimpleFollowupParas(self):
190         s = '''>hello\ntesting\n\ntesting\n\ntesting'''
191         summary, content = parseContent(s, 0, 0)
192         self.assertEqual(summary, 'testing')
193         self.assertEqual(content, 'testing\n\ntesting\n\ntesting')
195     def testEmpty(self):
196         s = ''
197         summary, content = parseContent(s, 0, 0)
198         self.assertEqual(summary, '')
199         self.assertEqual(content, '')
201     def testIndentationSummary(self):
202         s = '    Four space indent.\n\n    Four space indent.\nNo indent.'
203         summary, content = parseContent(s, 0, 0)
204         self.assertEqual(summary, '    Four space indent.')
206     def testIndentationContent(self):
207         s = '    Four space indent.\n\n    Four space indent.\nNo indent.'
208         summary, content = parseContent(s, 0, 0)
209         self.assertEqual(content, s)
211 def suite():
212    return unittest.makeSuite(MailsplitTestCase, 'test')
216 # $Log: not supported by cvs2svn $
217 # Revision 1.9  2002/01/10 06:19:20  richard
218 # followup lines directly after a quoted section were being eaten.
220 # Revision 1.8  2001/10/28 23:22:28  richard
221 # fixed bug #474749 ] Indentations lost
223 # Revision 1.7  2001/10/23 00:57:32  richard
224 # Removed debug print from mailsplit test.
226 # Revision 1.6  2001/10/21 03:35:13  richard
227 # bug #473125: Paragraph in e-mails
229 # Revision 1.5  2001/08/07 00:24:43  richard
230 # stupid typo
232 # Revision 1.4  2001/08/07 00:15:51  richard
233 # Added the copyright/license notice to (nearly) all files at request of
234 # Bizar Software.
236 # Revision 1.3  2001/08/05 07:06:25  richard
237 # removed some print statements
239 # Revision 1.2  2001/08/03 07:23:09  richard
240 # er, removed the innocent from the the code :)
242 # Revision 1.1  2001/08/03 07:18:22  richard
243 # Implemented correct mail splitting (was taking a shortcut). Added unit
244 # tests. Also snips signatures now too.
248 # vim: set filetype=python ts=4 sw=4 et si