Mercurial > public > mercurial-scm > hg-stable
annotate tests/svnxml.py @ 50248:af9d050f2bb8
rust: box ConfigValueParseError to avoid large result types
clippy emits a warning that all the Result types are way too large
because of HgError includes ConfigValueParseError as one of the variants,
so its size is 136 bytes.
By boxing ConfigValueParseError we're hopefully making everything faster
"for free".
author | Arseniy Alekseyev <aalekseyev@janestreet.com> |
---|---|
date | Mon, 27 Feb 2023 18:24:29 +0000 |
parents | 6000f5b25c9b |
children |
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 import sys |
812eb3b7dc43
py3: use absolute_import in svnxml.py
Robert Stanca <robert.stanca7@gmail.com>
parents:
16512
diff
changeset
|
5 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
|
6 |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41351
diff
changeset
|
7 |
16512
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
8 def xmltext(e): |
43076
2372284d9457
formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents:
41351
diff
changeset
|
9 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:
41351
diff
changeset
|
10 |
16512
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
11 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
12 def parseentry(entry): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
13 e = {} |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
14 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
|
15 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
|
16 e['msg'] = xmltext(entry.getElementsByTagName('msg')[0]) |
46472
7525e77b5eac
convert: option to set date and time for svn commits
Nikita Slyusarev <nslus@yandex-team.com>
parents:
43076
diff
changeset
|
17 e['date'] = xmltext(entry.getElementsByTagName('date')[0]) |
16512
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'): |
41351
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:
41351
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:
41351
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: |
46472
7525e77b5eac
convert: option to set date and time for svn commits
Nikita Slyusarev <nslus@yandex-team.com>
parents:
43076
diff
changeset
|
45 for k in ('revision', 'author', 'date', 'msg'): |
16512
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']): |
41351
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: |
41351
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:
41351
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) |