@@ -34,6 +34,18 @@ def captured_output():
3434 finally :
3535 sys .stdout , sys .stderr = old_out , old_err
3636
37+ def normalize_file (filename , skiplines = [ None ]):
38+ # https://stackoverflow.com/questions/4710067/using-python-for-deleting-a-specific-line-in-a-file
39+
40+ with open (filename , "r+" ) as f :
41+ d = f .readlines ()
42+ f .seek (0 )
43+ for i in d :
44+ for skip in skiplines :
45+ if skip not in i :
46+ f .write (i )
47+ f .truncate ()
48+
3749class AdminTest (object ):
3850
3951 backend = None
@@ -64,7 +76,7 @@ def install_init(self, type="classic",
6476
6577 # Run under context manager to suppress output of help text.
6678 with captured_output () as (out , err ):
67- sys .argv = ['main' , '-i' , '_test_admin' , 'install' ,
79+ sys .argv = ['main' , '-i' , self . dirname , 'install' ,
6880 type , self .backend , settings ]
6981 ret = admin .main ()
7082 self .assertEqual (ret , 0 )
@@ -77,7 +89,7 @@ def install_init(self, type="classic",
7789
7890 # initialize tracker with initial_data.py. Put password
7991 # on cli so I don't have to respond to prompting.
80- sys .argv = ['main' , '-i' , '_test_admin' , 'initialise' , 'admin' ]
92+ sys .argv = ['main' , '-i' , self . dirname , 'initialise' , 'admin' ]
8193 admin .force = True # force it to nuke existing database
8294 ret = admin .main ()
8395 self .assertEqual (ret , 0 )
@@ -94,7 +106,7 @@ def testGet(self):
94106 self .admin = AdminTool ()
95107
96108 with captured_output () as (out , err ):
97- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
109+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
98110 'title="foo bar"' , 'assignedto=admin' ]
99111 ret = self .admin .main ()
100112
@@ -104,7 +116,7 @@ def testGet(self):
104116
105117 self .admin = AdminTool ()
106118 with captured_output () as (out , err ):
107- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
119+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
108120 'title="bar foo bar"' , 'assignedto=anonymous' ,
109121 'superseder=1' ]
110122 ret = self .admin .main ()
@@ -116,7 +128,7 @@ def testGet(self):
116128
117129 self .admin = AdminTool ()
118130 with captured_output () as (out , err ):
119- sys .argv = ['main' , '-i' , '_test_admin' , 'get' , 'assignedto' ,
131+ sys .argv = ['main' , '-i' , self . dirname , 'get' , 'assignedto' ,
120132 'issue2' ]
121133 ret = self .admin .main ()
122134
@@ -128,7 +140,7 @@ def testGet(self):
128140
129141 self .admin = AdminTool ()
130142 with captured_output () as (out , err ):
131- sys .argv = ['main' , '-i' , '_test_admin' , 'get' , 'superseder' ,
143+ sys .argv = ['main' , '-i' , self . dirname , 'get' , 'superseder' ,
132144 'issue2' ]
133145 ret = self .admin .main ()
134146
@@ -140,7 +152,7 @@ def testGet(self):
140152
141153 self .admin = AdminTool ()
142154 with captured_output () as (out , err ):
143- sys .argv = ['main' , '-i' , '_test_admin' , 'get' , 'title' , 'issue1' ]
155+ sys .argv = ['main' , '-i' , self . dirname , 'get' , 'title' , 'issue1' ]
144156 ret = self .admin .main ()
145157
146158 self .assertEqual (ret , 0 )
@@ -151,7 +163,7 @@ def testGet(self):
151163
152164 self .admin = AdminTool ()
153165 with captured_output () as (out , err ):
154- sys .argv = ['main' , '-i' , '_test_admin' , 'get' , 'tile' , 'issue1' ]
166+ sys .argv = ['main' , '-i' , self . dirname , 'get' , 'tile' , 'issue1' ]
155167 ret = self .admin .main ()
156168
157169 expected_err = 'Error: no such issue property "tile"'
@@ -165,7 +177,7 @@ def testGet(self):
165177 def testInit (self ):
166178 import sys
167179 self .admin = AdminTool ()
168- sys .argv = ['main' , '-i' , '_test_admin' , 'install' , 'classic' , self .backend ]
180+ sys .argv = ['main' , '-i' , self . dirname , 'install' , 'classic' , self .backend ]
169181 ret = self .admin .main ()
170182 print (ret )
171183 self .assertTrue (ret == 0 )
@@ -176,7 +188,7 @@ def testInitWithConfig_ini(self):
176188 import sys
177189 from roundup .configuration import CoreConfig
178190 self .admin = AdminTool ()
179- sys .argv = ['main' , '-i' , '_test_admin' , 'install' , 'classic' , self .backend ]
191+ sys .argv = ['main' , '-i' , self . dirname , 'install' , 'classic' , self .backend ]
180192 # create a config_ini.ini file in classic template
181193 templates = self .admin .listTemplates ()
182194 config_ini_content = "[mail]\n # comment\n debug = SendMail.LOG\n "
@@ -215,7 +227,7 @@ def testFind(self):
215227 self .install_init ()
216228
217229 with captured_output () as (out , err ):
218- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
230+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
219231 'title="foo bar"' , 'assignedto=admin' ]
220232 ret = self .admin .main ()
221233
@@ -225,7 +237,7 @@ def testFind(self):
225237
226238 self .admin = AdminTool ()
227239 with captured_output () as (out , err ):
228- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
240+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
229241 'title="bar foo bar"' , 'assignedto=anonymous' ]
230242 ret = self .admin .main ()
231243
@@ -235,7 +247,7 @@ def testFind(self):
235247
236248 self .admin = AdminTool ()
237249 with captured_output () as (out , err ):
238- sys .argv = ['main' , '-i' , '_test_admin' , 'find' , 'issue' ,
250+ sys .argv = ['main' , '-i' , self . dirname , 'find' , 'issue' ,
239251 'assignedto=1' ]
240252 ret = self .admin .main ()
241253
@@ -249,7 +261,7 @@ def testFind(self):
249261 ''' 1,2 should return all entries that have assignedto
250262 either admin or anonymous
251263 '''
252- sys .argv = ['main' , '-i' , '_test_admin' , 'find' , 'issue' ,
264+ sys .argv = ['main' , '-i' , self . dirname , 'find' , 'issue' ,
253265 'assignedto=1,2' ]
254266 ret = self .admin .main ()
255267
@@ -265,7 +277,7 @@ def testFind(self):
265277 ''' 1,2 should return all entries that have assignedto
266278 either admin or anonymous
267279 '''
268- sys .argv = ['main' , '-i' , '_test_admin' , 'find' , 'issue' ,
280+ sys .argv = ['main' , '-i' , self . dirname , 'find' , 'issue' ,
269281 'assignedto=admin,anonymous' ]
270282 ret = self .admin .main ()
271283
@@ -280,13 +292,13 @@ def testGenconfigUpdate(self):
280292 the context managers capture the pdb prompts and this screws
281293 up the stdout strings with (pdb) prefixed to the line.
282294 '''
283- import sys
295+ import sys , filecmp
284296
285297 self .admin = AdminTool ()
286298 self .install_init ()
287299
288300 with captured_output () as (out , err ):
289- sys .argv = ['main' , '-i' , '_test_admin' , 'genconfig' ]
301+ sys .argv = ['main' , '-i' , self . dirname , 'genconfig' ]
290302 ret = self .admin .main ()
291303
292304 out = out .getvalue ().strip ()
@@ -298,27 +310,47 @@ def testGenconfigUpdate(self):
298310 self .admin = AdminTool ()
299311
300312 with captured_output () as (out , err ):
301- sys .argv = ['main' , '-i' , '_test_admin' , 'genconfig' , "foo" ]
313+ sys .argv = ['main' , '-i' , self .dirname , 'genconfig' ,
314+ self .dirname + "/config2.ini" ]
302315 ret = self .admin .main ()
303316
304317 out = out .getvalue ().strip ()
305318 print (out )
306319 # FIXME get better successful test later.
307320 expected = ""
308321 self .assertTrue (expected in out )
322+ self .assertTrue (os .path .isfile (self .dirname + "/config2.ini" ))
323+ # Files aren't the same. Lines need to be removed.
324+ # like user, web, backend etc. Genconfig generates a file
325+ # to be customized.
326+ #self.assertTrue(filecmp.cmp(self.dirname + "/config2.ini",
327+ # self.dirname + "/config.ini"))
309328
310329 # Reopen the db closed by previous call
311330 self .admin = AdminTool ()
312331
313332 with captured_output () as (out , err ):
314- sys .argv = ['main' , '-i' , '_test_admin' , 'update' , "foo2" ]
333+ sys .argv = ['main' , '-i' , self .dirname , 'update' ,
334+ self .dirname + "/foo2.ini" ]
315335 ret = self .admin .main ()
316336
317337 out = out .getvalue ().strip ()
318338 print (out )
319339 # FIXME get better successful test later.
320340 expected = ""
321341 self .assertTrue (expected in out )
342+ self .assertTrue (os .path .isfile (self .dirname + "/foo2.ini" ))
343+
344+ # Autogenerated date header is different. Remove it
345+ # so filecmp passes.
346+ normalize_file (self .dirname + "/foo2.ini" ,
347+ [ '# Autogenerated at' ])
348+ normalize_file (self .dirname + "/config.ini" ,
349+ [ '# Autogenerated at' ])
350+
351+ self .assertTrue (filecmp .cmp (self .dirname + "/config.ini" ,
352+ self .dirname + "/foo2.ini" ))
353+
322354
323355 def testCliParse (self ):
324356 ''' Note the tests will fail if you run this under pdb.
@@ -336,7 +368,7 @@ def testCliParse(self):
336368 ''' assignedto is not a valid property=value, so
337369 report error.
338370 '''
339- sys .argv = ['main' , '-i' , '_test_admin' , 'fin' , 'issue' ,
371+ sys .argv = ['main' , '-i' , self . dirname , 'fin' , 'issue' ,
340372 'assignedto=1' ]
341373 ret = self .admin .main ()
342374
@@ -352,7 +384,7 @@ def testCliParse(self):
352384 ''' assignedto is not a valid property=value, so
353385 report error.
354386 '''
355- sys .argv = ['main' , '-i' , '_test_admin' , 'f' , 'issue' ,
387+ sys .argv = ['main' , '-i' , self . dirname , 'f' , 'issue' ,
356388 'assignedto' ]
357389 ret = self .admin .main ()
358390
@@ -368,7 +400,7 @@ def testCliParse(self):
368400 ''' assignedto is not a valid property=value, so
369401 report error.
370402 '''
371- sys .argv = ['main' , '-i' , '_test_admin' , 'xyzzy' , 'issue' ,
403+ sys .argv = ['main' , '-i' , self . dirname , 'xyzzy' , 'issue' ,
372404 'assignedto' ]
373405 ret = self .admin .main ()
374406
@@ -385,7 +417,7 @@ def testCliParse(self):
385417 ''' assignedto is not a valid property=value, so
386418 report error.
387419 '''
388- sys .argv = ['main' , '-i' , '_test_admin' , 'find' , 'issue' ,
420+ sys .argv = ['main' , '-i' , self . dirname , 'find' , 'issue' ,
389421 'assignedto' ]
390422 ret = self .admin .main ()
391423
@@ -405,7 +437,7 @@ def testFilter(self):
405437 self .install_init ()
406438
407439 with captured_output () as (out , err ):
408- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
440+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
409441 'title="foo bar"' , 'assignedto=admin' ]
410442 ret = self .admin .main ()
411443
@@ -415,7 +447,7 @@ def testFilter(self):
415447
416448 self .admin = AdminTool ()
417449 with captured_output () as (out , err ):
418- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
450+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
419451 'title="bar foo bar"' , 'assignedto=anonymous' ]
420452 ret = self .admin .main ()
421453
@@ -428,7 +460,7 @@ def testFilter(self):
428460 # test string - one results, one value, substring
429461 self .admin = AdminTool ()
430462 with captured_output () as (out , err ):
431- sys .argv = ['main' , '-i' , '_test_admin' , 'filter' , 'user' ,
463+ sys .argv = ['main' , '-i' , self . dirname , 'filter' , 'user' ,
432464 'username=admin' ]
433465 ret = self .admin .main ()
434466
@@ -443,7 +475,7 @@ def testFilter(self):
443475 ''' a,n should return all entries that have an a and n
444476 so admin or anonymous
445477 '''
446- sys .argv = ['main' , '-i' , '_test_admin' , 'filter' , 'user' ,
478+ sys .argv = ['main' , '-i' , self . dirname , 'filter' , 'user' ,
447479 'username=a,n' ]
448480 ret = self .admin .main ()
449481
@@ -460,7 +492,7 @@ def testFilter(self):
460492 ''' a,y should return all entries that have an a and y
461493 so anonymous
462494 '''
463- sys .argv = ['main' , '-i' , '_test_admin' , 'filter' , 'user' ,
495+ sys .argv = ['main' , '-i' , self . dirname , 'filter' , 'user' ,
464496 'username=a,y' ]
465497 ret = self .admin .main ()
466498
@@ -474,7 +506,7 @@ def testFilter(self):
474506 with captured_output () as (out , err ):
475507 ''' will return empty set as admin!=anonymous
476508 '''
477- sys .argv = ['main' , '-i' , '_test_admin' , 'filter' , 'user' ,
509+ sys .argv = ['main' , '-i' , self . dirname , 'filter' , 'user' ,
478510 'username=admin,anonymous' ]
479511 ret = self .admin .main ()
480512
@@ -486,7 +518,7 @@ def testFilter(self):
486518 # test link using ids
487519 self .admin = AdminTool ()
488520 with captured_output () as (out , err ):
489- sys .argv = ['main' , '-i' , '_test_admin' , 'filter' , 'issue' ,
521+ sys .argv = ['main' , '-i' , self . dirname , 'filter' , 'issue' ,
490522 'assignedto=1,2' ]
491523 ret = self .admin .main ()
492524
@@ -500,7 +532,7 @@ def testFilter(self):
500532 with captured_output () as (out , err ):
501533 ''' will return empty set as admin!=anonymous
502534 '''
503- sys .argv = ['main' , '-i' , '_test_admin' , 'filter' , 'issue' ,
535+ sys .argv = ['main' , '-i' , self . dirname , 'filter' , 'issue' ,
504536 'assignedto=admin,anonymous' ]
505537 ret = self .admin .main ()
506538
@@ -519,7 +551,7 @@ def testSet(self):
519551 self .admin = AdminTool ()
520552
521553 with captured_output () as (out , err ):
522- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
554+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
523555 'title="foo bar"' , 'assignedto=admin' ]
524556 ret = self .admin .main ()
525557
@@ -529,7 +561,7 @@ def testSet(self):
529561
530562 self .admin = AdminTool ()
531563 with captured_output () as (out , err ):
532- sys .argv = ['main' , '-i' , '_test_admin' , 'create' , 'issue' ,
564+ sys .argv = ['main' , '-i' , self . dirname , 'create' , 'issue' ,
533565 'title="bar foo bar"' , 'assignedto=anonymous' ]
534566 ret = self .admin .main ()
535567
@@ -539,7 +571,7 @@ def testSet(self):
539571
540572 self .admin = AdminTool ()
541573 with captured_output () as (out , err ):
542- sys .argv = ['main' , '-i' , '_test_admin' , 'set' , 'issue2' , 'title="new title"' ]
574+ sys .argv = ['main' , '-i' , self . dirname , 'set' , 'issue2' , 'title="new title"' ]
543575 ret = self .admin .main ()
544576
545577 out = out .getvalue ().strip ()
@@ -549,7 +581,7 @@ def testSet(self):
549581
550582 self .admin = AdminTool ()
551583 with captured_output () as (out , err ):
552- sys .argv = ['main' , '-i' , '_test_admin' , 'set' , 'issue2' , 'tile="new title"' ]
584+ sys .argv = ['main' , '-i' , self . dirname , 'set' , 'issue2' , 'tile="new title"' ]
553585 ret = self .admin .main ()
554586
555587 expected_err = "Error: 'tile' is not a property of issue"
@@ -583,7 +615,7 @@ def testSpecification(self):
583615 ]
584616
585617 with captured_output () as (out , err ):
586- sys .argv = ['main' , '-i' , '_test_admin' , 'specification' , 'user' ]
618+ sys .argv = ['main' , '-i' , self . dirname , 'specification' , 'user' ]
587619 ret = self .admin .main ()
588620
589621 outlist = out .getvalue ().strip ().split ("\n " )
0 commit comments