forked from mirrors/gecko-dev
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
36 lines
1.1 KiB
Python
Executable file
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")
|