Mercurial > hg
annotate tests/svnxml.py @ 29489:54ad81b0665f
sslutil: handle default CA certificate loading on Windows
See the inline comment for what's going on here.
There is magic built into the "ssl" module that ships with modern
CPython that knows how to load the system CA certificates on
Windows. Since we're not shipping a CA bundle with Mercurial,
if we're running on legacy CPython there's nothing we can do
to load CAs on Windows, so it makes sense to print a warning.
I don't anticipate many people will see this warning because
the official (presumed popular) Mercurial distributions on
Windows bundle Python and should be distributing a modern Python
capable of loading system CA certs.
author | Gregory Szorc <gregory.szorc@gmail.com> |
---|---|
date | Mon, 04 Jul 2016 10:04:11 -0700 |
parents | 812eb3b7dc43 |
children | c17d73bf6a4d |
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): |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
38 fp = sys.stdout |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
39 for e in entries: |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
40 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
|
41 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
|
42 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
|
43 frominfo = '' |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
44 if frev: |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
45 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
|
46 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
|
47 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
|
48 |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
49 if __name__ == '__main__': |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
50 data = sys.stdin.read() |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
51 entries = parselog(data) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
52 printentries(entries) |
c58bdecdb800
test-convert-svn-sink: add helper to smooth svn xml output
Patrick Mezard <patrick@mezard.eu>
parents:
diff
changeset
|
53 |