From 3dbce37c710a7417f4ceb0e698ba335b025a5b07 Mon Sep 17 00:00:00 2001 From: Patrick Ohly Date: Fri, 17 Apr 2026 08:09:04 +0200 Subject: [PATCH] generate-jobs: print diff in case of failure This makes a CI failure more useful. In one case, the CI reported "differs from existing" without saying how and locally the check passed. --- hack/generate-jobs.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hack/generate-jobs.py b/hack/generate-jobs.py index 438b8212e05f..c0f39af4ccc6 100755 --- a/hack/generate-jobs.py +++ b/hack/generate-jobs.py @@ -16,7 +16,7 @@ import argparse import configparser -import filecmp +import difflib import os import pathlib import shutil @@ -107,22 +107,24 @@ def generate_one(path: pathlib.Path, verify: bool) -> typing.List[str]: errors.append(f"Can't verify content: {out} doesn't exist") continue else: - equal = filecmp.cmp(out, tmp.name, shallow=False) + with open(tmp.name) as expected, open(out) as actual: + diff = difflib.context_diff(actual.readlines(), expected.readlines(), + fromfile="actual", tofile="expected") + diff = ''.join(diff) if verify: os.unlink(tmp.name) - if not equal: + if diff != "": errors.append( - f"Generated content for {out} differs from existing" + f"Generated content for {out} differs from existing:\n{diff}" ) continue - if equal: + if diff == "": os.unlink(tmp.name) continue shutil.move(tmp.name, out) return errors - def main(argv): """Entry point.""" parser = argparse.ArgumentParser(