Mercurial > hg
annotate tests/svnxml.py @ 40955: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 |
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 |