Mercurial > p > roundup > code
changeset 6178:227c05ce2d85
Nuke database on install and fix specification test
Need to empty database as part of install_init(). Wasn't a problem for
sqlite/anydbm as those got nuked by killing the test directory on each
new test. For postgres/mysql in CI it needs to be nuked.
Using admin.force=True to get the admin.py module to do it. If that
doesn't work can open the instance and nuke it manually.
Fields listed when getting specification for class are in different
orders for different databases backends and versions. Use sorted
lines for comparison.
| author | John Rouillard <rouilj@ieee.org> |
|---|---|
| date | Tue, 19 May 2020 01:14:48 -0400 |
| parents | 41907e1f9c3f |
| children | a701c9c81597 |
| files | test/test_admin.py |
| diffstat | 1 files changed, 27 insertions(+), 15 deletions(-) [+] |
line wrap: on
line diff
--- a/test/test_admin.py Tue May 19 00:16:21 2020 -0400 +++ b/test/test_admin.py Tue May 19 01:14:48 2020 -0400 @@ -13,6 +13,8 @@ from .test_mysql import skip_mysql from .test_postgresql import skip_postgresql +#from roundup import instance + # https://stackoverflow.com/questions/4219717/how-to-assert-output-with-nosetest-unittest-in-python # lightly modified from contextlib import contextmanager @@ -58,6 +60,7 @@ ''' admin=AdminTool() + admin.force = True # force it to nuke existing tracker # Run under context manager to suppress output of help text. with captured_output() as (out, err): @@ -66,12 +69,20 @@ ret = admin.main() self.assertEqual(ret, 0) + # nuke any existing database (mysql/postgreql) + # possible method in case admin.force doesn't work + #tracker = instance.open(self.dirname) + #if tracker.exists(): + # tracker.nuke() + # initialize tracker with initial_data.py. Put password # on cli so I don't have to respond to prompting. sys.argv=['main', '-i', '_test_admin', 'initialise', 'admin'] + admin.force = True # force it to nuke existing database ret = admin.main() self.assertEqual(ret, 0) + def testInit(self): import sys self.admin=AdminTool() @@ -309,27 +320,28 @@ self.install_init() self.admin=AdminTool() + self.maxDiff = 0 import inspect - spec='''username: <roundup.hyperdb.String> (key property) - alternate_addresses: <roundup.hyperdb.String> - realname: <roundup.hyperdb.String> - roles: <roundup.hyperdb.String> - organisation: <roundup.hyperdb.String> - queries: <roundup.hyperdb.Multilink to "query"> - phone: <roundup.hyperdb.String> - address: <roundup.hyperdb.String> - timezone: <roundup.hyperdb.String> - password: <roundup.hyperdb.Password>''' - - spec = inspect.cleandoc(spec) + spec= [ 'username: <roundup.hyperdb.String> (key property)', + 'alternate_addresses: <roundup.hyperdb.String>', + 'realname: <roundup.hyperdb.String>', + 'roles: <roundup.hyperdb.String>', + 'organisation: <roundup.hyperdb.String>', + 'queries: <roundup.hyperdb.Multilink to "query">', + 'phone: <roundup.hyperdb.String>', + 'address: <roundup.hyperdb.String>', + 'timezone: <roundup.hyperdb.String>', + 'password: <roundup.hyperdb.Password>', + ] + with captured_output() as (out, err): sys.argv=['main', '-i', '_test_admin', 'specification', 'user'] ret = self.admin.main() - out = out.getvalue().strip() - print(out) - self.assertEqual(out, spec) + outlist = out.getvalue().strip().split("\n") + print(outlist) + self.assertEqual(sorted(outlist), sorted(spec)) class anydbmAdminTest(AdminTest, unittest.TestCase):
