fune/taskcluster/docker/diffoscope/report_error
Mike Hommey 7269200e75 Bug 1713225 - Fix diffoscope error reporting after bug 1694785. r=firefox-build-system-reviewers,andi
Bug 1694785 upgraded diffoscope, and the new version had differences in
its output format that just made our error reporting miss everything. So
we fix the error reporting to work with the new version, as well as add
a test case to ensure that we don't upgrade diffoscope to a version that
would break out reporting again without noticing.

Differential Revision: https://phabricator.services.mozilla.com/D118137
2021-06-17 09:08:28 +00:00

36 lines
1.1 KiB
Python
Executable file

#!/usr/bin/env python3
import sys
stem = sys.argv[1]
# We "parse" the diff output, so we look at the lines that contain a "tee", like:
# ├── +++ b/firefox
# │ ├── +++ b/firefox/libxul.so
# │ │ ├── readelf --wide --notes {}
# We ignore lines like the last one, to only report file names. And we ignore
# lines for directories such as the first one.
TEE = "├── "
VERTICAL_LINE = ""
paths = set()
with open(f"{stem}.txt") as fh:
for l in fh:
l = l.rstrip()
before, tee, after = l.partition(TEE)
if not tee:
continue
before = before.split()
assert all(x == VERTICAL_LINE for x in before)
depth = len(before)
_, plus, after = after.partition("+++ ")
if not plus:
continue
_, b, full_path = after.partition("b/")
assert b == "b/"
parent_path = "/".join(full_path.split("/")[:-1])
if parent_path in paths:
paths.remove(parent_path)
if full_path:
paths.add(full_path)
for p in sorted(paths):
print(f"TEST-UNEXPECTED-FAIL | {p} differs. See the {stem}.html or {stem}.txt artifact")