Mercurial > hg-stable
annotate tests/test-doctest.py @ 34215:0a2fd3bfc704
py3: convert function name to bytes in ui.configwith()
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sun, 03 Sep 2017 17:47:21 +0900 |
parents | 1e71dddc10a2 |
children | dfd009e5f9f2 |
rev | line source |
---|---|
7041
b856071435f7
tests: fix readline escape characters in output for test-doctest.py
Mads Kiilerich <mads@kiilerich.com>
parents:
5525
diff
changeset
|
1 # this is hack to make sure no escape characters are inserted into the output |
28933
6262f0215d08
tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27432
diff
changeset
|
2 |
6262f0215d08
tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27432
diff
changeset
|
3 from __future__ import absolute_import |
6262f0215d08
tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27432
diff
changeset
|
4 |
6262f0215d08
tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27432
diff
changeset
|
5 import doctest |
6262f0215d08
tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27432
diff
changeset
|
6 import os |
34155
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
7 import re |
28933
6262f0215d08
tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents:
27432
diff
changeset
|
8 import sys |
31447
82350f7fa56c
tests: allow running doctests selectively on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
31044
diff
changeset
|
9 |
82350f7fa56c
tests: allow running doctests selectively on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
31044
diff
changeset
|
10 ispy3 = (sys.version_info[0] >= 3) |
82350f7fa56c
tests: allow running doctests selectively on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
31044
diff
changeset
|
11 |
7078
967adcf5910d
test-doctest: remove TERM env variable only if it's there
Patrick Mezard <pmezard@gmail.com>
parents:
7041
diff
changeset
|
12 if 'TERM' in os.environ: |
7184
380fda3eed13
clean up trailing spaces
Dirkjan Ochtman <dirkjan@ochtman.nl>
parents:
7078
diff
changeset
|
13 del os.environ['TERM'] |
3232
394ac87f3b74
[extendedchangelog] encode/decode function
Benoit Boissinot <benoit.boissinot@ens-lyon.org>
parents:
diff
changeset
|
14 |
34155
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
15 class py3docchecker(doctest.OutputChecker): |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
16 def check_output(self, want, got, optionflags): |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
17 want2 = re.sub(r'''\bu(['"])(.*?)\1''', r'\1\2\1', want) # py2: u'' |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
18 got2 = re.sub(r'''\bb(['"])(.*?)\1''', r'\1\2\1', got) # py3: b'' |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
19 # py3: <exc.name>: b'<msg>' -> <name>: <msg> |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
20 # <exc.name>: <others> -> <name>: <others> |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
21 got2 = re.sub(r'''^mercurial\.\w+\.(\w+): (['"])(.*?)\2''', r'\1: \3', |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
22 got2, re.MULTILINE) |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
23 got2 = re.sub(r'^mercurial\.\w+\.(\w+): ', r'\1: ', got2, re.MULTILINE) |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
24 return any(doctest.OutputChecker.check_output(self, w, g, optionflags) |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
25 for w, g in [(want, got), (want2, got2)]) |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
26 |
31447
82350f7fa56c
tests: allow running doctests selectively on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
31044
diff
changeset
|
27 # TODO: migrate doctests to py3 and enable them on both versions |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
28 def testmod(name, optionflags=0, testtarget=None, py2=True, py3=True): |
31447
82350f7fa56c
tests: allow running doctests selectively on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
31044
diff
changeset
|
29 if not (not ispy3 and py2 or ispy3 and py3): |
82350f7fa56c
tests: allow running doctests selectively on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
31044
diff
changeset
|
30 return |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
31 __import__(name) |
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
32 mod = sys.modules[name] |
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
33 if testtarget is not None: |
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
34 mod = getattr(mod, testtarget) |
34155
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
35 |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
36 # minimal copy of doctest.testmod() |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
37 finder = doctest.DocTestFinder() |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
38 checker = None |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
39 if ispy3: |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
40 checker = py3docchecker() |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
41 runner = doctest.DocTestRunner(checker=checker, optionflags=optionflags) |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
42 for test in finder.find(mod, name): |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
43 runner.run(test) |
52ec9ac0303b
doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
32518
diff
changeset
|
44 runner.summarize() |
14171
fa2b596db182
ui: add configint function and tests
Sune Foldager <cryo@cyanite.org>
parents:
13949
diff
changeset
|
45 |
27432
77d25b913f80
changegroup: introduce cg3, which has support for exchanging treemanifests
Augie Fackler <augie@google.com>
parents:
25805
diff
changeset
|
46 testmod('mercurial.changegroup') |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
47 testmod('mercurial.changelog') |
31524
43d6ef658874
color: insert color code after every "\e[0m" (issue5413)
Yuya Nishihara <yuya@tcha.org>
parents:
31488
diff
changeset
|
48 testmod('mercurial.color') |
31488
a7c687c35119
ui: move configlist parser to config.py
Jun Wu <quark@fb.com>
parents:
31448
diff
changeset
|
49 testmod('mercurial.config') |
32518
05abc47f3746
annotate: add core algorithm to skip a rev
Siddharth Agarwal <sid0@fb.com>
parents:
31808
diff
changeset
|
50 testmod('mercurial.context') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
51 testmod('mercurial.dagparser', optionflags=doctest.NORMALIZE_WHITESPACE, |
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
52 py3=False) # py3: use of str() |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
53 testmod('mercurial.dispatch') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
54 testmod('mercurial.encoding', py3=False) # py3: multiple encoding issues |
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
55 testmod('mercurial.formatter', py3=False) # py3: write bytes to stdout |
20799
069bf1b821c8
clone: add doctest for default destination
Yuya Nishihara <yuya@tcha.org>
parents:
20419
diff
changeset
|
56 testmod('mercurial.hg') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
57 testmod('mercurial.hgweb.hgwebdir_mod', py3=False) # py3: repr(bytes) ? |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
58 testmod('mercurial.match') |
31808
ca3b4a2b7e54
mdiff: add a hunkinrange helper function
Denis Laxalde <denis@laxalde.org>
parents:
31524
diff
changeset
|
59 testmod('mercurial.mdiff') |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
60 testmod('mercurial.minirst') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
61 testmod('mercurial.patch', py3=False) # py3: bytes[n], etc. ? |
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
62 testmod('mercurial.pathutil', py3=False) # py3: os.sep |
25306
c87b05925054
parser: add helper to reduce nesting of chained infix operations
Yuya Nishihara <yuya@tcha.org>
parents:
24243
diff
changeset
|
63 testmod('mercurial.parser') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
64 testmod('mercurial.pycompat') |
31044
0b8356705de6
revset: split language services to revsetlang module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
30913
diff
changeset
|
65 testmod('mercurial.revsetlang') |
30913
1be65deb3d54
smartset: move set classes and related functions from revset module (API)
Yuya Nishihara <yuya@tcha.org>
parents:
30565
diff
changeset
|
66 testmod('mercurial.smartset') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
67 testmod('mercurial.store', py3=False) # py3: bytes[n] |
20840
308344d80fe5
subrepo: factor out Git version check to add doctests
Siddharth Agarwal <sid0@fb.com>
parents:
20799
diff
changeset
|
68 testmod('mercurial.subrepo') |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
69 testmod('mercurial.templatefilters') |
25783
1f6878c87c25
templater: introduce one-pass parsing of nested template strings
Yuya Nishihara <yuya@tcha.org>
parents:
25306
diff
changeset
|
70 testmod('mercurial.templater') |
34215
0a2fd3bfc704
py3: convert function name to bytes in ui.configwith()
Yuya Nishihara <yuya@tcha.org>
parents:
34213
diff
changeset
|
71 testmod('mercurial.ui') |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
72 testmod('mercurial.url') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
73 testmod('mercurial.util', py3=False) # py3: multiple bytes/unicode issues |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
74 testmod('mercurial.util', testtarget='platform') |
34156
9b4d7d4855f5
doctest: enable tests by default on Python 3
Yuya Nishihara <yuya@tcha.org>
parents:
34155
diff
changeset
|
75 testmod('hgext.convert.convcmd', py3=False) # py3: use of str() ? |
20047
10a7d2bcb81b
tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents:
19098
diff
changeset
|
76 testmod('hgext.convert.cvsps') |
20048
da99ebd35f00
convert: readability and test of rpairs function
Mads Kiilerich <madski@unity3d.com>
parents:
20047
diff
changeset
|
77 testmod('hgext.convert.filemap') |
25788
a36fd0993522
convert: unescape Perforce-escaped special characters in filenames
Eugene Baranov <eug.baranov@gmail.com>
parents:
25783
diff
changeset
|
78 testmod('hgext.convert.p4') |
20419
e61a8395c3c1
convert: make subversion revsplit more stable when meeting revisions without @
Mads Kiilerich <madski@unity3d.com>
parents:
20048
diff
changeset
|
79 testmod('hgext.convert.subversion') |
22546
aac5482db318
mq: refactor patchheader header ordering to match export (BC)
Mads Kiilerich <madski@unity3d.com>
parents:
21568
diff
changeset
|
80 testmod('hgext.mq') |
34213
1e71dddc10a2
drawdag: add a couple of doctests to help with python3 porting
Augie Fackler <raf@durin42.com>
parents:
34156
diff
changeset
|
81 # Helper scripts in tests/ that have doctests: |
1e71dddc10a2
drawdag: add a couple of doctests to help with python3 porting
Augie Fackler <raf@durin42.com>
parents:
34156
diff
changeset
|
82 testmod('drawdag') |