1 # -*- test-case-name: buildbot.test.test_mailparse -*-
3 from twisted
.trial
import unittest
4 from twisted
.python
import util
5 from buildbot
.changes
.mail
import parseFreshCVSMail
, parseSyncmail
7 class Test1(unittest
.TestCase
):
10 msg
= util
.sibpath(__file__
, msg
)
11 return parseFreshCVSMail(None, open(msg
, "r"))
14 c
= self
.get("mail/msg1")
15 self
.assertEqual(c
.who
, "moshez")
16 self
.assertEqual(c
.files
, ["Twisted/debian/python-twisted.menu.in"])
17 self
.assertEqual(c
.comments
, "Instance massenger, apparently\n")
18 self
.assertEqual(c
.isdir
, 0)
21 c
= self
.get("mail/msg2")
22 self
.assertEqual(c
.who
, "itamarst")
23 self
.assertEqual(c
.files
, ["Twisted/twisted/web/woven/form.py",
24 "Twisted/twisted/python/formmethod.py"])
25 self
.assertEqual(c
.comments
,
26 "submit formmethod now subclass of Choice\n")
27 self
.assertEqual(c
.isdir
, 0)
30 # same as msg2 but missing the ViewCVS section
31 c
= self
.get("mail/msg3")
32 self
.assertEqual(c
.who
, "itamarst")
33 self
.assertEqual(c
.files
, ["Twisted/twisted/web/woven/form.py",
34 "Twisted/twisted/python/formmethod.py"])
35 self
.assertEqual(c
.comments
,
36 "submit formmethod now subclass of Choice\n")
37 self
.assertEqual(c
.isdir
, 0)
40 # same as msg3 but also missing CVS patch section
41 c
= self
.get("mail/msg4")
42 self
.assertEqual(c
.who
, "itamarst")
43 self
.assertEqual(c
.files
, ["Twisted/twisted/web/woven/form.py",
44 "Twisted/twisted/python/formmethod.py"])
45 self
.assertEqual(c
.comments
,
46 "submit formmethod now subclass of Choice\n")
47 self
.assertEqual(c
.isdir
, 0)
51 c
= self
.get("mail/msg5")
52 self
.assertEqual(c
.who
, "etrepum")
53 self
.assertEqual(c
.files
, ["Twisted/doc/examples/cocoaDemo"])
54 self
.assertEqual(c
.comments
,
55 "Directory /cvs/Twisted/doc/examples/cocoaDemo added to the repository\n")
56 self
.assertEqual(c
.isdir
, 1)
60 c
= self
.get("mail/msg6")
61 self
.assertEqual(c
.who
, "etrepum")
62 self
.assertEqual(c
.files
, [
63 "Twisted/doc/examples/cocoaDemo/MyAppDelegate.py",
64 "Twisted/doc/examples/cocoaDemo/__main__.py",
65 "Twisted/doc/examples/cocoaDemo/bin-python-main.m",
66 "Twisted/doc/examples/cocoaDemo/English.lproj/InfoPlist.strings",
67 "Twisted/doc/examples/cocoaDemo/English.lproj/MainMenu.nib/classes.nib",
68 "Twisted/doc/examples/cocoaDemo/English.lproj/MainMenu.nib/info.nib",
69 "Twisted/doc/examples/cocoaDemo/English.lproj/MainMenu.nib/keyedobjects.nib",
70 "Twisted/doc/examples/cocoaDemo/cocoaDemo.pbproj/project.pbxproj"])
71 self
.assertEqual(c
.comments
,
72 "Cocoa (OS X) clone of the QT demo, using polling reactor\n\nRequires pyobjc ( http://pyobjc.sourceforge.net ), it's not much different than the template project. The reactor is iterated periodically by a repeating NSTimer.\n")
73 self
.assertEqual(c
.isdir
, 0)
77 c
= self
.get("mail/msg7")
78 self
.assertEqual(c
.who
, "etrepum")
79 self
.assertEqual(c
.files
, [
80 "Twisted/doc/examples/cocoaDemo/MyAppDelegate.py",
81 "Twisted/doc/examples/cocoaDemo/__main__.py",
82 "Twisted/doc/examples/cocoaDemo/bin-python-main.m",
83 "Twisted/doc/examples/cocoaDemo/English.lproj/InfoPlist.strings",
84 "Twisted/doc/examples/cocoaDemo/English.lproj/MainMenu.nib/classes.nib",
85 "Twisted/doc/examples/cocoaDemo/English.lproj/MainMenu.nib/info.nib",
86 "Twisted/doc/examples/cocoaDemo/English.lproj/MainMenu.nib/keyedobjects.nib",
87 "Twisted/doc/examples/cocoaDemo/cocoaDemo.pbproj/project.pbxproj"])
88 self
.assertEqual(c
.comments
,
89 "Directories break debian build script, waiting for reasonable fix\n")
90 self
.assertEqual(c
.isdir
, 0)
93 # files outside Twisted/
94 c
= self
.get("mail/msg8")
95 self
.assertEqual(c
.who
, "acapnotic")
96 self
.assertEqual(c
.files
, [ "CVSROOT/freshCfg" ])
97 self
.assertEqual(c
.comments
, "it doesn't work with invalid syntax\n")
98 self
.assertEqual(c
.isdir
, 0)
101 # also creates a directory
102 c
= self
.get("mail/msg9")
103 self
.assertEqual(c
.who
, "exarkun")
104 self
.assertEqual(c
.files
, ["Twisted/sandbox/exarkun/persist-plugin"])
105 self
.assertEqual(c
.comments
,
106 "Directory /cvs/Twisted/sandbox/exarkun/persist-plugin added to the repository\n")
107 self
.assertEqual(c
.isdir
, 1)
110 class Test2(unittest
.TestCase
):
112 msg
= util
.sibpath(__file__
, msg
)
113 return parseFreshCVSMail(None, open(msg
, "r"), prefix
="Twisted")
116 c
= self
.get("mail/msg1")
117 self
.assertEqual(c
.who
, "moshez")
118 self
.assertEqual(c
.files
, ["debian/python-twisted.menu.in"])
119 self
.assertEqual(c
.comments
, "Instance massenger, apparently\n")
122 c
= self
.get("mail/msg2")
123 self
.assertEqual(c
.who
, "itamarst")
124 self
.assertEqual(c
.files
, ["twisted/web/woven/form.py",
125 "twisted/python/formmethod.py"])
126 self
.assertEqual(c
.comments
,
127 "submit formmethod now subclass of Choice\n")
130 # same as msg2 but missing the ViewCVS section
131 c
= self
.get("mail/msg3")
132 self
.assertEqual(c
.who
, "itamarst")
133 self
.assertEqual(c
.files
, ["twisted/web/woven/form.py",
134 "twisted/python/formmethod.py"])
135 self
.assertEqual(c
.comments
,
136 "submit formmethod now subclass of Choice\n")
139 # same as msg3 but also missing CVS patch section
140 c
= self
.get("mail/msg4")
141 self
.assertEqual(c
.who
, "itamarst")
142 self
.assertEqual(c
.files
, ["twisted/web/woven/form.py",
143 "twisted/python/formmethod.py"])
144 self
.assertEqual(c
.comments
,
145 "submit formmethod now subclass of Choice\n")
148 # creates a directory
149 c
= self
.get("mail/msg5")
150 self
.assertEqual(c
.who
, "etrepum")
151 self
.assertEqual(c
.files
, ["doc/examples/cocoaDemo"])
152 self
.assertEqual(c
.comments
,
153 "Directory /cvs/Twisted/doc/examples/cocoaDemo added to the repository\n")
154 self
.assertEqual(c
.isdir
, 1)
158 c
= self
.get("mail/msg6")
159 self
.assertEqual(c
.who
, "etrepum")
160 self
.assertEqual(c
.files
, [
161 "doc/examples/cocoaDemo/MyAppDelegate.py",
162 "doc/examples/cocoaDemo/__main__.py",
163 "doc/examples/cocoaDemo/bin-python-main.m",
164 "doc/examples/cocoaDemo/English.lproj/InfoPlist.strings",
165 "doc/examples/cocoaDemo/English.lproj/MainMenu.nib/classes.nib",
166 "doc/examples/cocoaDemo/English.lproj/MainMenu.nib/info.nib",
167 "doc/examples/cocoaDemo/English.lproj/MainMenu.nib/keyedobjects.nib",
168 "doc/examples/cocoaDemo/cocoaDemo.pbproj/project.pbxproj"])
169 self
.assertEqual(c
.comments
,
170 "Cocoa (OS X) clone of the QT demo, using polling reactor\n\nRequires pyobjc ( http://pyobjc.sourceforge.net ), it's not much different than the template project. The reactor is iterated periodically by a repeating NSTimer.\n")
171 self
.assertEqual(c
.isdir
, 0)
175 c
= self
.get("mail/msg7")
176 self
.assertEqual(c
.who
, "etrepum")
177 self
.assertEqual(c
.files
, [
178 "doc/examples/cocoaDemo/MyAppDelegate.py",
179 "doc/examples/cocoaDemo/__main__.py",
180 "doc/examples/cocoaDemo/bin-python-main.m",
181 "doc/examples/cocoaDemo/English.lproj/InfoPlist.strings",
182 "doc/examples/cocoaDemo/English.lproj/MainMenu.nib/classes.nib",
183 "doc/examples/cocoaDemo/English.lproj/MainMenu.nib/info.nib",
184 "doc/examples/cocoaDemo/English.lproj/MainMenu.nib/keyedobjects.nib",
185 "doc/examples/cocoaDemo/cocoaDemo.pbproj/project.pbxproj"])
186 self
.assertEqual(c
.comments
,
187 "Directories break debian build script, waiting for reasonable fix\n")
188 self
.assertEqual(c
.isdir
, 0)
191 # files outside Twisted/
192 c
= self
.get("mail/msg8")
193 self
.assertEqual(c
, None)
196 class Test3(unittest
.TestCase
):
198 msg
= util
.sibpath(__file__
, msg
)
199 return parseSyncmail(None, open(msg
, "r"), prefix
="buildbot")
201 def getNoPrefix(self
, msg
):
202 msg
= util
.sibpath(__file__
, msg
)
203 return parseSyncmail(None, open(msg
, "r"))
206 c
= self
.get("mail/syncmail.1")
207 self
.failUnless(c
is not None)
208 self
.assertEqual(c
.who
, "warner")
209 self
.assertEqual(c
.files
, ["buildbot/changes/freshcvsmail.py"])
210 self
.assertEqual(c
.comments
,
211 "remove leftover code, leave a temporary compatibility import. Note! Start\nimporting FCMaildirSource from changes.mail instead of changes.freshcvsmail\n")
212 self
.assertEqual(c
.isdir
, 0)
215 c
= self
.get("mail/syncmail.2")
216 self
.assertEqual(c
.who
, "warner")
217 self
.assertEqual(c
.files
, ["ChangeLog"])
218 self
.assertEqual(c
.comments
, "\t* NEWS: started adding new features\n")
219 self
.assertEqual(c
.isdir
, 0)
222 c
= self
.get("mail/syncmail.3")
223 self
.failUnless(c
== None)
226 c
= self
.get("mail/syncmail.4")
227 self
.assertEqual(c
.who
, "warner")
228 self
.assertEqual(c
.files
, ["test/mail/syncmail.1",
229 "test/mail/syncmail.2",
230 "test/mail/syncmail.3"
232 self
.assertEqual(c
.comments
, "test cases for syncmail parser\n")
233 self
.assertEqual(c
.isdir
, 0)
234 self
.assertEqual(c
.branch
, None)
238 c
= self
.getNoPrefix("mail/syncmail.5")
240 self
.assertEqual(c
.who
, "thomas")
241 self
.assertEqual(c
.files
, ['test1/MANIFEST',
246 self
.assertEqual(c
.branch
, "BRANCH-DEVEL")
247 self
.assertEqual(c
.isdir
, 0)