comparison tests/svnxml.py @ 41326:7c54357be2ae

tests: normalize XML values to bytes This fixes some type mismatches. The encoding shouldn't matter for what this script is used for. UTF-8 seems reasonable, especially since I'm pretty sure SVN will emit UTF-8 encoded XML. Differential Revision: https://phab.mercurial-scm.org/D5665
author Gregory Szorc <gregory.szorc@gmail.com>
date Wed, 23 Jan 2019 16:22:54 -0800
parents c17d73bf6a4d
children 2372284d9457
comparison
equal deleted inserted replaced
41325:eff0a7d3229c 41326:7c54357be2ae
18 e['paths'] = [] 18 e['paths'] = []
19 paths = entry.getElementsByTagName('paths') 19 paths = entry.getElementsByTagName('paths')
20 if paths: 20 if paths:
21 paths = paths[0] 21 paths = paths[0]
22 for p in paths.getElementsByTagName('path'): 22 for p in paths.getElementsByTagName('path'):
23 action = p.getAttribute('action') 23 action = p.getAttribute('action').encode('utf-8')
24 path = xmltext(p) 24 path = xmltext(p).encode('utf-8')
25 frompath = p.getAttribute('copyfrom-path') 25 frompath = p.getAttribute('copyfrom-path').encode('utf-8')
26 fromrev = p.getAttribute('copyfrom-rev') 26 fromrev = p.getAttribute('copyfrom-rev').encode('utf-8')
27 e['paths'].append((path, action, frompath, fromrev)) 27 e['paths'].append((path, action, frompath, fromrev))
28 return e 28 return e
29 29
30 def parselog(data): 30 def parselog(data):
31 entries = [] 31 entries = []
41 fp = sys.stdout 41 fp = sys.stdout
42 for e in entries: 42 for e in entries:
43 for k in ('revision', 'author', 'msg'): 43 for k in ('revision', 'author', 'msg'):
44 fp.write(('%s: %s\n' % (k, e[k])).encode('utf-8')) 44 fp.write(('%s: %s\n' % (k, e[k])).encode('utf-8'))
45 for path, action, fpath, frev in sorted(e['paths']): 45 for path, action, fpath, frev in sorted(e['paths']):
46 frominfo = '' 46 frominfo = b''
47 if frev: 47 if frev:
48 frominfo = ' (from %s@%s)' % (fpath, frev) 48 frominfo = b' (from %s@%s)' % (fpath, frev)
49 p = ' %s %s%s\n' % (action, path, frominfo) 49 p = b' %s %s%s\n' % (action, path, frominfo)
50 fp.write(p.encode('utf-8')) 50 fp.write(p)
51 51
52 if __name__ == '__main__': 52 if __name__ == '__main__':
53 data = sys.stdin.read() 53 data = sys.stdin.read()
54 entries = parselog(data) 54 entries = parselog(data)
55 printentries(entries) 55 printentries(entries)