summaryrefslogtreecommitdiff
path: root/tests/svnxml.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/svnxml.py')
-rw-r--r--tests/svnxml.py51
1 files changed, 0 insertions, 51 deletions
diff --git a/tests/svnxml.py b/tests/svnxml.py
deleted file mode 100644
index b3b2b63..0000000
--- a/tests/svnxml.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# 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.
-import xml.dom.minidom, sys
-
-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):
- 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)
-