comparison test/db_test_base.py @ 5395:23b8e6067f7c

Python 3 preparation: update calls to dict methods. Tool-assisted patch. Changes of iterkeys / itervalues / iteritems to keys / values / items are fully automated, but may make things less efficient in Python 2. Automated tools want to add list() around many calls to keys / values / items, but I thought most such list() additions were unnecessary because it seemed the result of keys / values / items was just iterated over while the set of dict keys remained unchanged, rather than used in a way requiring an actual list, or used while the set of keys in the dict could change. It's quite possible I missed some cases where list() was really needed, or left in some unnecessary list() calls. In cases where list() was only needed because the resulting list was then sorted in-place, I changed the code to use calls to sorted().
author Joseph Myers <jsm@polyomino.org.uk>
date Tue, 24 Jul 2018 23:04:42 +0000
parents 0fd27da353eb
children 0cde8a595893
comparison
equal deleted inserted replaced
5394:c26d88ec071e 5395:23b8e6067f7c
1228 self.assertEqual(1, len(journal)) 1228 self.assertEqual(1, len(journal))
1229 (nodeid, date_stamp, journaltag, action, params) = journal[0] 1229 (nodeid, date_stamp, journaltag, action, params) = journal[0]
1230 self.assertEqual(nodeid, '1') 1230 self.assertEqual(nodeid, '1')
1231 self.assertEqual(journaltag, self.db.user.lookup('admin')) 1231 self.assertEqual(journaltag, self.db.user.lookup('admin'))
1232 self.assertEqual(action, 'create') 1232 self.assertEqual(action, 'create')
1233 keys = params.keys() 1233 keys = sorted(params.keys())
1234 keys.sort()
1235 self.assertEqual(keys, []) 1234 self.assertEqual(keys, [])
1236 1235
1237 # journal entry for link 1236 # journal entry for link
1238 journal = self.db.getjournal('user', '1') 1237 journal = self.db.getjournal('user', '1')
1239 self.assertEqual(1, len(journal)) 1238 self.assertEqual(1, len(journal))
2277 self.db.commit() 2276 self.db.commit()
2278 finally: 2277 finally:
2279 shutil.rmtree('_test_export') 2278 shutil.rmtree('_test_export')
2280 2279
2281 # compare with snapshot of the database 2280 # compare with snapshot of the database
2282 for cn, items in orig.iteritems(): 2281 for cn, items in orig.items():
2283 klass = self.db.classes[cn] 2282 klass = self.db.classes[cn]
2284 propdefs = klass.getprops(1) 2283 propdefs = klass.getprops(1)
2285 # ensure retired items are retired :) 2284 # ensure retired items are retired :)
2286 l = items.keys(); l.sort() 2285 l = sorted(items.keys())
2287 m = klass.list(); m.sort() 2286 m = klass.list(); m.sort()
2288 ae(l, m, '%s id list wrong %r vs. %r'%(cn, l, m)) 2287 ae(l, m, '%s id list wrong %r vs. %r'%(cn, l, m))
2289 for id, props in items.items(): 2288 for id, props in items.items():
2290 for name, value in props.items(): 2289 for name, value in props.items():
2291 l = klass.get(id, name) 2290 l = klass.get(id, name)
2297 except AssertionError: 2296 except AssertionError:
2298 if not isinstance(propdefs[name], Date): 2297 if not isinstance(propdefs[name], Date):
2299 raise 2298 raise
2300 # don't get hung up on rounding errors 2299 # don't get hung up on rounding errors
2301 assert not l.__cmp__(value, int_seconds=1) 2300 assert not l.__cmp__(value, int_seconds=1)
2302 for jc, items in origj.iteritems(): 2301 for jc, items in origj.items():
2303 for id, oj in items.iteritems(): 2302 for id, oj in items.items():
2304 rj = self.db.getjournal(jc, id) 2303 rj = self.db.getjournal(jc, id)
2305 # Both mysql and postgresql have some minor issues with 2304 # Both mysql and postgresql have some minor issues with
2306 # rounded seconds on export/import, so we compare only 2305 # rounded seconds on export/import, so we compare only
2307 # the integer part. 2306 # the integer part.
2308 for j in oj: 2307 for j in oj:
2523 2522
2524 self.db.issue.addprop(fixer=Link("user")) 2523 self.db.issue.addprop(fixer=Link("user"))
2525 # force any post-init stuff to happen 2524 # force any post-init stuff to happen
2526 self.db.post_init() 2525 self.db.post_init()
2527 props = self.db.issue.getprops() 2526 props = self.db.issue.getprops()
2528 keys = props.keys() 2527 keys = sorted(props.keys())
2529 keys.sort()
2530 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', 2528 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
2531 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id', 'messages', 2529 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id', 'messages',
2532 'nosy', 'priority', 'spam', 'status', 'superseder', 'title']) 2530 'nosy', 'priority', 'spam', 'status', 'superseder', 'title'])
2533 self.assertEqual(self.db.issue.get('1', "fixer"), None) 2531 self.assertEqual(self.db.issue.get('1', "fixer"), None)
2534 2532
2537 self.db.commit() 2535 self.db.commit()
2538 2536
2539 del self.db.issue.properties['title'] 2537 del self.db.issue.properties['title']
2540 self.db.post_init() 2538 self.db.post_init()
2541 props = self.db.issue.getprops() 2539 props = self.db.issue.getprops()
2542 keys = props.keys() 2540 keys = sorted(props.keys())
2543 keys.sort()
2544 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', 2541 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
2545 'creator', 'deadline', 'feedback', 'files', 'foo', 'id', 'messages', 2542 'creator', 'deadline', 'feedback', 'files', 'foo', 'id', 'messages',
2546 'nosy', 'priority', 'spam', 'status', 'superseder']) 2543 'nosy', 'priority', 'spam', 'status', 'superseder'])
2547 self.assertEqual(self.db.issue.list(), ['1']) 2544 self.assertEqual(self.db.issue.list(), ['1'])
2548 2545
2552 2549
2553 self.db.issue.addprop(fixer=Link("user")) 2550 self.db.issue.addprop(fixer=Link("user"))
2554 del self.db.issue.properties['title'] 2551 del self.db.issue.properties['title']
2555 self.db.post_init() 2552 self.db.post_init()
2556 props = self.db.issue.getprops() 2553 props = self.db.issue.getprops()
2557 keys = props.keys() 2554 keys = sorted(props.keys())
2558 keys.sort()
2559 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation', 2555 self.assertEqual(keys, ['activity', 'actor', 'assignedto', 'creation',
2560 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id', 2556 'creator', 'deadline', 'feedback', 'files', 'fixer', 'foo', 'id',
2561 'messages', 'nosy', 'priority', 'spam', 'status', 'superseder']) 2557 'messages', 'nosy', 'priority', 'spam', 'status', 'superseder'])
2562 self.assertEqual(self.db.issue.list(), ['1']) 2558 self.assertEqual(self.db.issue.list(), ['1'])
2563 2559
2714 self.db.post_init() 2710 self.db.post_init()
2715 2711
2716 def test_fileClassProps(self): 2712 def test_fileClassProps(self):
2717 self.open_database() 2713 self.open_database()
2718 a = self.module.FileClass(self.db, 'a') 2714 a = self.module.FileClass(self.db, 'a')
2719 l = a.getprops().keys() 2715 l = sorted(a.getprops().keys())
2720 l.sort()
2721 self.assert_(l, ['activity', 'actor', 'content', 'created', 2716 self.assert_(l, ['activity', 'actor', 'content', 'created',
2722 'creation', 'type']) 2717 'creation', 'type'])
2723 2718
2724 def init_ab(self): 2719 def init_ab(self):
2725 self.open_database() 2720 self.open_database()
3003 result.append(id) 2998 result.append(id)
3004 nodeid = id 2999 nodeid = id
3005 for x in range(4): 3000 for x in range(4):
3006 assert(('user', nodeid) in self.db.cache) 3001 assert(('user', nodeid) in self.db.cache)
3007 n = self.db.user.getnode(nodeid) 3002 n = self.db.user.getnode(nodeid)
3008 for k, v in user_result[nodeid].iteritems(): 3003 for k, v in user_result[nodeid].items():
3009 ae((k, n[k]), (k, v)) 3004 ae((k, n[k]), (k, v))
3010 for k in 'creation', 'activity': 3005 for k in 'creation', 'activity':
3011 assert(n[k]) 3006 assert(n[k])
3012 nodeid = n.supervisor 3007 nodeid = n.supervisor
3013 self.db.clearCache() 3008 self.db.clearCache()
3020 ('+','assignedto.supervisor.supervisor'), 3015 ('+','assignedto.supervisor.supervisor'),
3021 ('-','assignedto.supervisor'), ('+','assignedto')]): 3016 ('-','assignedto.supervisor'), ('+','assignedto')]):
3022 result.append(id) 3017 result.append(id)
3023 assert(('issue', id) in self.db.cache) 3018 assert(('issue', id) in self.db.cache)
3024 n = self.db.issue.getnode(id) 3019 n = self.db.issue.getnode(id)
3025 for k, v in issue_result[id].iteritems(): 3020 for k, v in issue_result[id].items():
3026 ae((k, n[k]), (k, v)) 3021 ae((k, n[k]), (k, v))
3027 for k in 'creation', 'activity': 3022 for k in 'creation', 'activity':
3028 assert(n[k]) 3023 assert(n[k])
3029 nodeid = n.assignedto 3024 nodeid = n.assignedto
3030 for x in range(4): 3025 for x in range(4):
3031 assert(('user', nodeid) in self.db.cache) 3026 assert(('user', nodeid) in self.db.cache)
3032 n = self.db.user.getnode(nodeid) 3027 n = self.db.user.getnode(nodeid)
3033 for k, v in user_result[nodeid].iteritems(): 3028 for k, v in user_result[nodeid].items():
3034 ae((k, n[k]), (k, v)) 3029 ae((k, n[k]), (k, v))
3035 for k in 'creation', 'activity': 3030 for k in 'creation', 'activity':
3036 assert(n[k]) 3031 assert(n[k])
3037 nodeid = n.supervisor 3032 nodeid = n.supervisor
3038 self.db.clearCache() 3033 self.db.clearCache()

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