Author: Jonas Devlieghere Date: 2020-04-20T09:03:48-07:00 New Revision: 4cfb71adba06037438e37dac84dbd9c3ac2b4319
URL: https://github.com/llvm/llvm-project/commit/4cfb71adba06037438e37dac84dbd9c3ac2b4319 DIFF: https://github.com/llvm/llvm-project/commit/4cfb71adba06037438e37dac84dbd9c3ac2b4319.diff LOG: [lldb/Scripts] Add verbose and failure only mode to replay script. Add two modes to the reproducer replay script that make debugging a little easier. Verbose mode prints stdout and stderr, regardless of whether replay was successful. When --failure-only is passed, output is limited to tests that failed to replay. Added: Modified: lldb/scripts/reproducer-replay.py Removed: ################################################################################ diff --git a/lldb/scripts/reproducer-replay.py b/lldb/scripts/reproducer-replay.py index 5e9fab176ab6..f16d6e8b146c 100755 --- a/lldb/scripts/reproducer-replay.py +++ b/lldb/scripts/reproducer-replay.py @@ -15,9 +15,10 @@ def run_reproducer(path): stderr=subprocess.PIPE) reason = None try: + success = proc.returncode == 0 outs, errs = proc.communicate(timeout=TIMEOUT) - result = 'PASSED' if proc.returncode == 0 else 'FAILED' - if proc.returncode != 0: + result = 'PASSED' if success else 'FAILED' + if not success: outs = outs.decode() errs = errs.decode() # Do some pattern matching to find out the cause of the failure. @@ -35,11 +36,18 @@ def run_reproducer(path): reason = f'Exit code {proc.returncode}' except subprocess.TimeoutExpired: proc.kill() + success = False outs, errs = proc.communicate() result = 'TIMEOUT' - reason_str = f' ({reason})' if reason else '' - print(f'{result}: {path}{reason_str}') + if not FAILURE_ONLY or not success: + reason_str = f' ({reason})' if reason else '' + print(f'{result}: {path}{reason_str}') + if VERBOSE: + if outs: + print(outs) + if errs: + print(errs) def find_reproducers(path): @@ -82,12 +90,23 @@ def find_reproducers(path): type=str, required=True, help='Path to the LLDB command line driver') + parser.add_argument('-v', + '--verbose', + help='Print replay output.', + action='store_true') + parser.add_argument('--failure-only', + help='Only log failures.', + action='store_true') args = parser.parse_args() global LLDB global TIMEOUT + global VERBOSE + global FAILURE_ONLY LLDB = args.lldb TIMEOUT = args.timeout + VERBOSE = args.verbose + FAILURE_ONLY = args.failure_only print( f'Replaying reproducers in {args.path} with {args.threads} threads and a {args.timeout} seconds timeout' _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits