tests/filtertraceback.py
author Yuya Nishihara <yuya@tcha.org>
Tue, 02 Jun 2020 20:40:06 +0900
branchstable
changeset 44794 2dc5ae953c4a
parent 44656 d359f0d1a3d3
child 45849 c102b704edb5
permissions -rwxr-xr-x
graft: fix --base value to be saved in state file 'True' just works because it is treated as an integer revision '1' and only the truthiness of the basectx is important. If multiple source revisions were supported with --base, the resumed graft operation would go wrong.

#!/usr/bin/env python

# Filters traceback lines from stdin.

from __future__ import absolute_import, print_function

import io
import sys

if sys.version_info[0] >= 3:
    # Prevent \r from being inserted on Windows.
    sys.stdout = io.TextIOWrapper(
        sys.stdout.buffer,
        sys.stdout.encoding,
        sys.stdout.errors,
        newline="\n",
        line_buffering=sys.stdout.line_buffering,
    )

state = 'none'

for line in sys.stdin:
    if state == 'none':
        if line.startswith('Traceback '):
            state = 'tb'

    elif state == 'tb':
        if line.startswith('  File '):
            state = 'file'
            continue

        elif not line.startswith(' '):
            state = 'none'

    elif state == 'file':
        # Ignore lines after "  File "
        state = 'tb'
        continue

    print(line, end='')