tests/test-doctest.py
author Martin von Zweigbergk <martinvonz@google.com>
Tue, 18 Jan 2022 13:05:21 -0800
changeset 49060 f3aafd785e65
parent 48966 6000f5b25c9b
child 49952 40060267df22
permissions -rw-r--r--
filemerge: add support for partial conflict resolution by external tool A common class of merge conflicts is in imports/#includes/etc. It's relatively easy to write a tool that can resolve these conflicts, perhaps by naively just unioning the statements and leaving any cleanup to other tools to do later [1]. Such specialized tools cannot generally resolve all conflicts in a file, of course. Let's therefore call them "partial merge tools". Note that the internal simplemerge algorithm is such a partial merge tool - one that only resolves trivial "conflicts" where one side is unchanged or both sides change in the same way. One can also imagine having smarter language-aware partial tools that merge the AST. It may be useful for such tools to interactively let the user resolve any conflicts it can't resolve itself. However, having the option of implementing it as a partial merge tool means that the developer doesn't *need* to create a UI for it. Instead, the user can resolve any remaining conflicts with their regular merge tool (e.g. `:merge3` or `meld). We don't currently have a way to let the user define such partial merge tools. That's what this patch addresses. It lets the user configure partial merge tools to run. Each tool can be configured to run only on files matching certain patterns (e.g. "*.py"). The tool takes three inputs (local, base, other) and resolves conflicts by updating these in place. For example, let's say the inputs are these: base: ``` import sys def main(): print('Hello') ``` local: ``` import os import sys def main(): print('Hi') ``` other: ``` import re import sys def main(): print('Howdy') ``` A partial merge tool could now resolve the conflicting imports by replacing the import statements in *all* files by the following snippet, while leaving the remainder of the files unchanged. ``` import os import re import sys ``` As a result, simplemerge and any regular merge tool that runs after the partial merge tool(s) will consider the imports to be non-conflicting and will only present the conflict in `main()` to the user. Differential Revision: https://phab.mercurial-scm.org/D12356
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
6262f0215d08 tests: make test-doctest use absolute_import
Pulkit Goyal <7895pulkit@gmail.com>
parents: 27432
diff changeset
     4
import doctest
45227
4a146cff76fa tests: fix test-check-module-imports.t broken by D9150
Martin von Zweigbergk <martinvonz@google.com>
parents: 45225
diff changeset
     5
import os
34155
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
     6
import re
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
     7
import subprocess
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
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    10
ispy3 = sys.version_info[0] >= 3
31447
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
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    15
34155
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    16
class py3docchecker(doctest.OutputChecker):
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    17
    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
    18
        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
    19
        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
    20
        # 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
    21
        #      <exc.name>: <others> -> <name>: <others>
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    22
        got2 = re.sub(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    23
            r'''^mercurial\.\w+\.(\w+): (['"])(.*?)\2''',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    24
            r'\1: \3',
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    25
            got2,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    26
            re.MULTILINE,
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    27
        )
34155
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    28
        got2 = re.sub(r'^mercurial\.\w+\.(\w+): ', r'\1: ', got2, re.MULTILINE)
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    29
        return any(
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    30
            doctest.OutputChecker.check_output(self, w, g, optionflags)
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    31
            for w, g in [(want, got), (want2, got2)]
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    32
        )
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    33
34155
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    34
34425
e416819d9ebb doctest: drop hack to run py2/3 tests selectively
Yuya Nishihara <yuya@tcha.org>
parents: 34363
diff changeset
    35
def testmod(name, optionflags=0, testtarget=None):
20047
10a7d2bcb81b tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents: 19098
diff changeset
    36
    __import__(name)
10a7d2bcb81b tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents: 19098
diff changeset
    37
    mod = sys.modules[name]
10a7d2bcb81b tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents: 19098
diff changeset
    38
    if testtarget is not None:
10a7d2bcb81b tests: make doctest test runner less verbose
Mads Kiilerich <madski@unity3d.com>
parents: 19098
diff changeset
    39
        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
    40
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    41
    # 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
    42
    finder = doctest.DocTestFinder()
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    43
    checker = None
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    44
    if ispy3:
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    45
        checker = py3docchecker()
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    46
    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
    47
    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
    48
        runner.run(test)
52ec9ac0303b doctest: normalize b'', u'' and exception output on Python 3
Yuya Nishihara <yuya@tcha.org>
parents: 32518
diff changeset
    49
    runner.summarize()
14171
fa2b596db182 ui: add configint function and tests
Sune Foldager <cryo@cyanite.org>
parents: 13949
diff changeset
    50
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 41381
diff changeset
    51
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    52
DONT_RUN = []
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    53
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    54
# Exceptions to the defaults for a given detected module. The value for each
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    55
# module name is a list of dicts that specify the kwargs to pass to testmod.
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    56
# testmod is called once per item in the list, so an empty list will cause the
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    57
# module to not be tested.
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    58
testmod_arg_overrides = {
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    59
    'i18n.check-translation': DONT_RUN,  # may require extra installation
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    60
    'mercurial.dagparser': [{'optionflags': doctest.NORMALIZE_WHITESPACE}],
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    61
    'mercurial.keepalive': DONT_RUN,  # >>> is an example, not a doctest
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    62
    'mercurial.posix': DONT_RUN,  # run by mercurial.platform
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    63
    'mercurial.statprof': DONT_RUN,  # >>> is an example, not a doctest
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    64
    'mercurial.util': [{}, {'testtarget': 'platform'}],  # run twice!
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    65
    'mercurial.windows': DONT_RUN,  # run by mercurial.platform
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    66
    'tests.test-url': [{'optionflags': doctest.NORMALIZE_WHITESPACE}],
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    67
}
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    68
44658
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    69
fileset = 'set:(**.py)'
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    70
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    71
cwd = os.path.dirname(os.environ["TESTDIR"])
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    72
45225
5a19d7c9129b tests: skip doctests if not running from a hg repo
Joerg Sonnenberger <joerg@bec.de>
parents: 44658
diff changeset
    73
if not os.path.isdir(os.path.join(cwd, ".hg")):
5a19d7c9129b tests: skip doctests if not running from a hg repo
Joerg Sonnenberger <joerg@bec.de>
parents: 44658
diff changeset
    74
    sys.exit(0)
5a19d7c9129b tests: skip doctests if not running from a hg repo
Joerg Sonnenberger <joerg@bec.de>
parents: 44658
diff changeset
    75
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    76
files = subprocess.check_output(
45957
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45227
diff changeset
    77
    "hg files --print0 \"%s\"" % fileset,
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45227
diff changeset
    78
    shell=True,
89a2afe31e82 formating: upgrade to black 20.8b1
Augie Fackler <raf@durin42.com>
parents: 45227
diff changeset
    79
    cwd=cwd,
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    80
).split(b'\0')
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    81
44658
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    82
if sys.version_info[0] >= 3:
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    83
    cwd = os.fsencode(cwd)
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    84
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    85
mods_tested = set()
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    86
for f in files:
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    87
    if not f:
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    88
        continue
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    89
44658
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    90
    with open(os.path.join(cwd, f), "rb") as fh:
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    91
        if not re.search(br'\n\s*>>>', fh.read()):
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    92
            continue
15aef805619d tests: perform grep manually in test-doctest.py
Gregory Szorc <gregory.szorc@gmail.com>
parents: 44574
diff changeset
    93
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    94
    if ispy3:
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    95
        f = f.decode()
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    96
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    97
    modname = f.replace('.py', '').replace('\\', '.').replace('/', '.')
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    98
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
    99
    # Third-party modules aren't our responsibility to test, and the modules in
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   100
    # contrib generally do not have doctests in a good state, plus they're hard
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   101
    # to import if this test is running with py2, so we just skip both for now.
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   102
    if modname.startswith('mercurial.thirdparty.') or modname.startswith(
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   103
        'contrib.'
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   104
    ):
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   105
        continue
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   106
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   107
    for kwargs in testmod_arg_overrides.get(modname, [{}]):
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   108
        mods_tested.add((modname, '%r' % (kwargs,)))
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   109
        if modname.startswith('tests.'):
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   110
            # On py2, we can't import from tests.foo, but it works on both py2
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   111
            # and py3 with the way that PYTHONPATH is setup to import without
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   112
            # the 'tests.' prefix, so we do that.
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   113
            modname = modname[len('tests.') :]
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   114
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   115
        testmod(modname, **kwargs)
44573
529cb23155bc tests: make test-doctest.t module list match reality
Kyle Lippincott <spectral@google.com>
parents: 43800
diff changeset
   116
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   117
# Meta-test: let's make sure that we actually ran what we expected to, above.
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   118
# Each item in the set is a 2-tuple of module name and stringified kwargs passed
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   119
# to testmod.
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   120
expected_mods_tested = set(
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   121
    [
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   122
        ('hgext.convert.convcmd', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   123
        ('hgext.convert.cvsps', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   124
        ('hgext.convert.filemap', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   125
        ('hgext.convert.p4', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   126
        ('hgext.convert.subversion', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   127
        ('hgext.fix', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   128
        ('hgext.mq', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   129
        ('mercurial.changelog', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   130
        ('mercurial.cmdutil', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   131
        ('mercurial.color', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   132
        ('mercurial.dagparser', "{'optionflags': 4}"),
48373
46d12f7762e4 dirstate-v2: fix infinite loop in pure packer
Raphaël Gomès <rgomes@octobus.net>
parents: 47200
diff changeset
   133
        ('mercurial.dirstateutils.v2', '{}'),
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   134
        ('mercurial.encoding', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   135
        ('mercurial.fancyopts', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   136
        ('mercurial.formatter', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   137
        ('mercurial.hg', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   138
        ('mercurial.hgweb.hgwebdir_mod', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   139
        ('mercurial.match', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   140
        ('mercurial.mdiff', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   141
        ('mercurial.minirst', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   142
        ('mercurial.parser', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   143
        ('mercurial.patch', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   144
        ('mercurial.pathutil', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   145
        ('mercurial.pycompat', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   146
        ('mercurial.revlogutils.deltas', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   147
        ('mercurial.revset', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   148
        ('mercurial.revsetlang', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   149
        ('mercurial.simplemerge', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   150
        ('mercurial.smartset', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   151
        ('mercurial.store', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   152
        ('mercurial.subrepo', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   153
        ('mercurial.templater', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   154
        ('mercurial.ui', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   155
        ('mercurial.util', "{'testtarget': 'platform'}"),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   156
        ('mercurial.util', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   157
        ('mercurial.utils.dateutil', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   158
        ('mercurial.utils.stringutil', '{}'),
46907
ffd3e823a7e5 urlutil: extract `url` related code from `util` into the new module
Pierre-Yves David <pierre-yves.david@octobus.net>
parents: 45957
diff changeset
   159
        ('mercurial.utils.urlutil', '{}'),
44574
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   160
        ('tests.drawdag', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   161
        ('tests.test-run-tests', '{}'),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   162
        ('tests.test-url', "{'optionflags': 4}"),
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   163
    ]
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   164
)
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   165
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   166
unexpectedly_run = mods_tested.difference(expected_mods_tested)
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   167
not_run = expected_mods_tested.difference(mods_tested)
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   168
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   169
if unexpectedly_run:
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   170
    print('Unexpectedly ran (probably need to add to list):')
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   171
    for r in sorted(unexpectedly_run):
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   172
        print('  %r' % (r,))
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   173
if not_run:
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   174
    print('Expected to run, but was not run (doctest removed?):')
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   175
    for r in sorted(not_run):
0af56d3ee24c tests: make test-doctest.t automatically find files to run tests on
Kyle Lippincott <spectral@google.com>
parents: 44573
diff changeset
   176
        print('  %r' % (r,))