[Lldb-commits] [lldb] 4cfb71a - [lldb/Scripts] Add verbose and failure only mode to replay script.
Jonas Devlieghere via lldb-commits
lldb-commits at lists.llvm.org
Mon Apr 20 09:04:21 PDT 2020
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'
More information about the lldb-commits
mailing list