tests/heredoctest.py
author Pierre-Yves David <pierre-yves.david@octobus.net>
Fri, 27 May 2022 03:14:23 +0200
changeset 49237 996a70c75c66
parent 48875 6000f5b25c9b
permissions -rw-r--r--
test-revlog: update the patch used to test delta againts nullrev We need to be careful to not create invalid delta for changelog. Changelog is special because it does not use any delta in practice and don't use general delta in its format. Using the new patch will help use to test more cases.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     1
import sys
15247
3cd1605e9d8e tests: remove temp doctest file when finished running it
Idan Kamara <idankk86@gmail.com>
parents: 15235
diff changeset
     2
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40318
diff changeset
     3
40318
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
     4
def flush():
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
     5
    sys.stdout.flush()
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
     6
    sys.stderr.flush()
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
     7
43076
2372284d9457 formatting: blacken the codebase
Augie Fackler <augie@google.com>
parents: 40318
diff changeset
     8
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     9
globalvars = {}
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    10
lines = sys.stdin.readlines()
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    11
while lines:
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    12
    l = lines.pop(0)
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    13
    if l.startswith('SALT'):
25032
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    14
        print(l[:-1])
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    15
    elif l.startswith('>>> '):
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    16
        snippet = l[4:]
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    17
        while lines and lines[0].startswith('... '):
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    18
            l = lines.pop(0)
22565
8d45a42b0c0f heredoctest: do not append extra newline character to continuation line
Yuya Nishihara <yuya@tcha.org>
parents: 22564
diff changeset
    19
            snippet += l[4:]
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    20
        c = compile(snippet, '<heredoc>', 'single')
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    21
        try:
40318
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
    22
            flush()
25032
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    23
            exec(c, globalvars)
40318
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
    24
            flush()
25032
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    25
        except Exception as inst:
40318
55fd0fefbec4 py3: flush std streams before/after running user code in heredoctest.py
Yuya Nishihara <yuya@tcha.org>
parents: 29485
diff changeset
    26
            flush()
25032
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    27
            print(repr(inst))