fuzz: Print coverage summary after run_once

This commit is contained in:
MarcoFalke 2024-01-26 17:29:26 +01:00
parent e3b68b3b83
commit fab97d81ce
No known key found for this signature in database

View File

@ -347,13 +347,18 @@ def run_once(*, fuzz_pool, corpus, test_list, src_dir, build_dir, using_libfuzze
text=True,
)
output += result.stderr
return output, result
return output, result, t
jobs.append(fuzz_pool.submit(job, t, args))
stats = []
for future in as_completed(jobs):
output, result = future.result()
output, result, target = future.result()
logging.debug(output)
if using_libfuzzer:
done_stat = [l for l in output.splitlines() if "DONE" in l]
assert len(done_stat) == 1
stats.append((target, done_stat[0]))
try:
result.check_returncode()
except subprocess.CalledProcessError as e:
@ -364,6 +369,13 @@ def run_once(*, fuzz_pool, corpus, test_list, src_dir, build_dir, using_libfuzze
logging.info(f"Target {result.args} failed with exit code {e.returncode}")
sys.exit(1)
if using_libfuzzer:
print("Summary:")
max_len = max(len(t[0]) for t in stats)
for t, s in sorted(stats):
t = t.ljust(max_len + 1)
print(f"{t}{s}")
def parse_test_list(*, fuzz_bin):
test_list_all = subprocess.run(