annotate tests/svnxml.py @ 45064:41b32cbc53f8

commitctx: document _filecommit input and output This is the beginning of a larger refactoring/cleanup of the commitctx code to clarify and augment the logic gathering metadata useful for copy tracing. The current code is a tad too long and entangled to make such update easy. We start with easy and small cleanup. Differential Revision: https://phab.mercurial-scm.org/D8699
author Pierre-Yves David <pierre-yves.david@octobus.net>
date Mon, 06 Jul 2020 18:52:19 +0200
parents 2372284d9457
children 7525e77b5eac
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
1 # Read the output of a "svn log --xml" command on stdin, parse it and
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
2 # print a subset of attributes common to all svn versions tested by
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
3 # hg.
28947
812eb3b7dc43 py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 16512
diff changeset
4 from __future__ import absolute_import
812eb3b7dc43 py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 16512
diff changeset
5 import sys
812eb3b7dc43 py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents: 16512
diff changeset
6 import xml.dom.minidom
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
7
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41326
diff changeset
8
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
9 def xmltext(e):
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41326
diff changeset
10 return ''.join(c.data for c in e.childNodes if c.nodeType == c.TEXT_NODE)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41326
diff changeset
11
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
12
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
13 def parseentry(entry):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
14 e = {}
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
15 e['revision'] = entry.getAttribute('revision')
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
16 e['author'] = xmltext(entry.getElementsByTagName('author')[0])
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
17 e['msg'] = xmltext(entry.getElementsByTagName('msg')[0])
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
18 e['paths'] = []
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
19 paths = entry.getElementsByTagName('paths')
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
20 if paths:
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
21 paths = paths[0]
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
22 for p in paths.getElementsByTagName('path'):
41326
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
23 action = p.getAttribute('action').encode('utf-8')
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
24 path = xmltext(p).encode('utf-8')
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
25 frompath = p.getAttribute('copyfrom-path').encode('utf-8')
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
26 fromrev = p.getAttribute('copyfrom-rev').encode('utf-8')
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
27 e['paths'].append((path, action, frompath, fromrev))
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
28 return e
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
29
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41326
diff changeset
30
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
31 def parselog(data):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
32 entries = []
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
33 doc = xml.dom.minidom.parseString(data)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
34 for e in doc.getElementsByTagName('logentry'):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
35 entries.append(parseentry(e))
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
36 return entries
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
37
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41326
diff changeset
38
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
39 def printentries(entries):
40216
c17d73bf6a4d py3: use sys.stdout.buffer for binary output in tests/svnxml.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 28947
diff changeset
40 try:
c17d73bf6a4d py3: use sys.stdout.buffer for binary output in tests/svnxml.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 28947
diff changeset
41 fp = sys.stdout.buffer
c17d73bf6a4d py3: use sys.stdout.buffer for binary output in tests/svnxml.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 28947
diff changeset
42 except AttributeError:
c17d73bf6a4d py3: use sys.stdout.buffer for binary output in tests/svnxml.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 28947
diff changeset
43 fp = sys.stdout
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
44 for e in entries:
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
45 for k in ('revision', 'author', 'msg'):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
46 fp.write(('%s: %s\n' % (k, e[k])).encode('utf-8'))
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
47 for path, action, fpath, frev in sorted(e['paths']):
41326
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
48 frominfo = b''
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
49 if frev:
41326
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
50 frominfo = b' (from %s@%s)' % (fpath, frev)
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
51 p = b' %s %s%s\n' % (action, path, frominfo)
7c54357be2ae tests: normalize XML values to bytes
Gregory Szorc <gregory.szorc@gmail.com>
parents: 40216
diff changeset
52 fp.write(p)
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
53
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41326
diff changeset
54
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
55 if __name__ == '__main__':
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
56 data = sys.stdin.read()
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
57 entries = parselog(data)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
58 printentries(entries)