tests/heredoctest.py
author FUJIWARA Katsunori <foozy@lares.dti.ne.jp>
Thu, 30 Jul 2015 06:22:09 +0900
branchstable
changeset 25879 99e88320d665
parent 25032 1db2127d2373
child 27297 4179d054b3e9
permissions -rw-r--r--
transplant: restore dirstate correctly at unexpected failure Before this patch, transplant can't restore dirstate as expected at failure other than one while patching. This causes: - unexpected file status - dirstate refers already rollback-ed parent (only at failure of transplanting the 2nd or later revision) To restore dirstate correctly also at unexpected failure, this patch encloses scope of store lock and transaction by 'dirstateguard'. This is temporary fixing for stable branch. See DirstateTransactionPlan wiki page for detail about the future plan to treat dirstate consistently around scope boundary of transaction. https://mercurial.selenic.com/wiki/DirstateTransactionPlan This patch also adds 'if lock' examination for safety 'lock.release()', because creating 'dirstateguard' object may fail unexpectedly (e.g. IOError for saving dirstate). BTW, in the test script, putting section header '[extensions]' into '.hg/hgrc' is needed to fix incomplete disabling 'abort' extension at 4d1382fd96ff.
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
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     3
globalvars = {}
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     4
lines = sys.stdin.readlines()
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     5
while lines:
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     6
    l = lines.pop(0)
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     7
    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
     8
        print(l[:-1])
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
     9
    elif l.startswith('>>> '):
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    10
        snippet = l[4:]
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    11
        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
    12
            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
    13
            snippet += l[4:]
15434
5635a4017061 run-tests: replace inline python handling with more native scheme
Matt Mackall <mpm@selenic.com>
parents: 15398
diff changeset
    14
        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
    15
        try:
25032
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    16
            exec(c, globalvars)
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    17
        except Exception as inst:
1db2127d2373 heredoctest: 2to3 -w -f numliterals -f except -f print tests/heredoctest.py
Augie Fackler <augie@google.com>
parents: 22565
diff changeset
    18
            print(repr(inst))