annotate tests/svnxml.py @ 40968:f6187e60f792

help: present boolean arguments as "--[no-]foo" This should make it much more discoverable (we document it in `hg help flags`, but most users don't think to look there). Note that flags that default to None (and not False) will not get this new presentation. We can change the defaults to False later for flags where it makes sense (probably almost all boolean flags). Differential Revision: https://phab.mercurial-scm.org/D5432
author Martin von Zweigbergk <martinvonz@google.com>
date Fri, 14 Dec 2018 13:44:46 -0800
parents c17d73bf6a4d
children 7c54357be2ae
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
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
8 def xmltext(e):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
9 return ''.join(c.data for c
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
10 in e.childNodes
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
11 if c.nodeType == c.TEXT_NODE)
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'):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
23 action = p.getAttribute('action')
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
24 path = xmltext(p)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
25 frompath = p.getAttribute('copyfrom-path')
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
26 fromrev = p.getAttribute('copyfrom-rev')
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
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
30 def parselog(data):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
31 entries = []
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
32 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
33 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
34 entries.append(parseentry(e))
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
35 return entries
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
36
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
37 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
38 try:
c17d73bf6a4d py3: use sys.stdout.buffer for binary output in tests/svnxml.py
Pulkit Goyal <pulkit@yandex-team.ru>
parents: 28947
diff changeset
39 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
40 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
41 fp = sys.stdout
16512
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
42 for e in entries:
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
43 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
44 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
45 for path, action, fpath, frev in sorted(e['paths']):
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
46 frominfo = ''
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
47 if frev:
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
48 frominfo = ' (from %s@%s)' % (fpath, frev)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
49 p = ' %s %s%s\n' % (action, path, frominfo)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
50 fp.write(p.encode('utf-8'))
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
51
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
52 if __name__ == '__main__':
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
53 data = sys.stdin.read()
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
54 entries = parselog(data)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
55 printentries(entries)
c58bdecdb800 test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff changeset
56