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.12 2002-10-18 03:34:58 richard 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!
115 >
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!
134 >
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!
157 >
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 testMultilineSummary(self):
212 s = 'This is a long sentence that would normally\nbe split. More words.'
213 summary, content = parseContent(s, 0, 0)
214 self.assertEqual(summary, 'This is a long sentence that would '
215 'normally\nbe split.')
217 def suite():
218 return unittest.makeSuite(MailsplitTestCase, 'test')
221 # vim: set filetype=python ts=4 sw=4 et si