Mercurial > hg
view tests/svnxml.py @ 40722:0800d9e6e216
tests: disable remotefilelog on Windows
I've spent a non trivial amount of time trying to eliminate the test errors, but
it's looking like this is pretty dependent on Unix support. For example, there
are attempts to delete open files, and uses of threads that report I/O attempts
on closed files. (Maybe this is a race condition? Don't we usually use
processes as workers on Windows?)
In any event, I don't want real new errors elsewhere to be masked by these known
problems.
For some reason $CACHEDIR is reported as missing in test-remotefilelog-repack.t,
but it actually exists in the hgcloneshallow call inside
shallowutil.mkstickygroupdir(). By the time the process exits, it's gone. I
don't see it being removed by code that calls 'rmdir' or 'remove' in the
extension itself.
author | Matt Harbison <matt_harbison@yahoo.com> |
---|---|
date | Sat, 24 Nov 2018 14:11:02 -0500 |
parents | c17d73bf6a4d |
children | 7c54357be2ae |
line wrap: on
line source
# Read the output of a "svn log --xml" command on stdin, parse it and # print a subset of attributes common to all svn versions tested by # hg. from __future__ import absolute_import import sys import xml.dom.minidom def xmltext(e): return ''.join(c.data for c in e.childNodes if c.nodeType == c.TEXT_NODE) def parseentry(entry): e = {} e['revision'] = entry.getAttribute('revision') e['author'] = xmltext(entry.getElementsByTagName('author')[0]) e['msg'] = xmltext(entry.getElementsByTagName('msg')[0]) e['paths'] = [] paths = entry.getElementsByTagName('paths') if paths: paths = paths[0] for p in paths.getElementsByTagName('path'): action = p.getAttribute('action') path = xmltext(p) frompath = p.getAttribute('copyfrom-path') fromrev = p.getAttribute('copyfrom-rev') e['paths'].append((path, action, frompath, fromrev)) return e def parselog(data): entries = [] doc = xml.dom.minidom.parseString(data) for e in doc.getElementsByTagName('logentry'): entries.append(parseentry(e)) return entries def printentries(entries): try: fp = sys.stdout.buffer except AttributeError: fp = sys.stdout for e in entries: for k in ('revision', 'author', 'msg'): fp.write(('%s: %s\n' % (k, e[k])).encode('utf-8')) for path, action, fpath, frev in sorted(e['paths']): frominfo = '' if frev: frominfo = ' (from %s@%s)' % (fpath, frev) p = ' %s %s%s\n' % (action, path, frominfo) fp.write(p.encode('utf-8')) if __name__ == '__main__': data = sys.stdin.read() entries = parselog(data) printentries(entries)