annotate test/test_admin.py @ 5817:bed579f654ee maint-1.6

issue2551029: Jinja2 template install error. Issue where template's config.ini not getting updated. Change do_install in admin.py to load config_ini.ini from template before writing tracker's config.ini. This generates an updated config file for the user on install preserving values required tomake tracker work. Added config_ini.ini files to jinja2 and responsive templates to set required values (template_engine and static_files; static_files resp.). Documented new file in doc/tracker_templates.txt and added tests for new admin.py code.
author John Rouillard <rouilj@ieee.org>
date Tue, 04 Jun 2019 18:42:05 -0400
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
5817
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
1 #
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
2 # Copyright (C) 2007 Stefan Seefeld
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
3 # All rights reserved.
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
4 # For license terms see the file COPYING.txt.
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
5 #
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
6
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
7 from __future__ import print_function
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
8 import unittest, os, shutil, errno, sys, difflib, cgi, re
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
9
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
10 from roundup.admin import AdminTool
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
11
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
12 from . import db_test_base
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
13 from .test_mysql import skip_mysql
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
14 from .test_postgresql import skip_postgresql
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
15
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
16
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
17 class AdminTest(object):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
18
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
19 backend = None
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
20
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
21 def setUp(self):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
22 self.dirname = '_test_admin'
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
23
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
24 def tearDown(self):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
25 try:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
26 shutil.rmtree(self.dirname)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
27 except OSError as error:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
28 if error.errno not in (errno.ENOENT, errno.ESRCH): raise
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
29
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
30 def testInit(self):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
31 import sys
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
32 self.admin=AdminTool()
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
33 sys.argv=['main', '-i', '_test_admin', 'install', 'classic', self.backend]
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
34 ret = self.admin.main()
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
35 print(ret)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
36 self.assertTrue(ret == 0)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
37 self.assertTrue(os.path.isfile(self.dirname + "/config.ini"))
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
38 self.assertTrue(os.path.isfile(self.dirname + "/schema.py"))
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
39
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
40 def testInitWithConfig_ini(self):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
41 import sys
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
42 from roundup.configuration import CoreConfig
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
43 self.admin=AdminTool()
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
44 sys.argv=['main', '-i', '_test_admin', 'install', 'classic', self.backend]
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
45 # create a config_ini.ini file in classic template
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
46 templates=self.admin.listTemplates()
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
47 config_ini_content = "[mail]\n# comment\ndebug = SendMail.LOG\n"
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
48 config_ini_path = templates['classic']['path'] + '/config_ini.ini'
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
49 config_ini_file = open(config_ini_path, "w")
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
50 config_ini_file.write(config_ini_content)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
51 config_ini_file.close()
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
52
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
53 try:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
54 ret = self.admin.main()
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
55 finally:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
56 try:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
57 # ignore file not found
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
58 os.remove(config_ini_path)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
59 except OSError as e: # FileNotFound exception under py3
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
60 if e.errno == 2:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
61 pass
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
62 else:
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
63 raise
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
64
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
65 print(ret)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
66 self.assertTrue(ret == 0)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
67 self.assertTrue(os.path.isfile(self.dirname + "/config.ini"))
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
68 self.assertTrue(os.path.isfile(self.dirname + "/schema.py"))
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
69 config=CoreConfig(self.dirname)
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
70 self.assertEqual(config['MAIL_DEBUG'], self.dirname + "/SendMail.LOG")
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
71
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
72
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
73
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
74 class anydbmAdminTest(AdminTest, unittest.TestCase):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
75 backend = 'anydbm'
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
76
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
77
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
78 @skip_mysql
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
79 class mysqlAdminTest(AdminTest, unittest.TestCase):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
80 backend = 'mysql'
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
81
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
82
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
83 class sqliteAdminTest(AdminTest, unittest.TestCase):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
84 backend = 'sqlite'
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
85
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
86
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
87 @skip_postgresql
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
88 class postgresqlAdminTest(AdminTest, unittest.TestCase):
bed579f654ee issue2551029: Jinja2 template install error.
John Rouillard <rouilj@ieee.org>
parents:
diff changeset
89 backend = 'postgresql'

Roundup Issue Tracker: http://roundup-tracker.org/