Mercurial > p > roundup > code
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() |
