diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 17:32:43 +0000 |
commit | 6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch) | |
tree | a68f146d7fa01f0134297619fbe7e33db084e0aa /taskcluster/scripts/misc/summarize-tgdiff.py | |
parent | Initial commit. (diff) | |
download | thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip |
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'taskcluster/scripts/misc/summarize-tgdiff.py')
-rw-r--r-- | taskcluster/scripts/misc/summarize-tgdiff.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/taskcluster/scripts/misc/summarize-tgdiff.py b/taskcluster/scripts/misc/summarize-tgdiff.py new file mode 100644 index 0000000000..f3a265ed66 --- /dev/null +++ b/taskcluster/scripts/misc/summarize-tgdiff.py @@ -0,0 +1,54 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import argparse +import json +import pathlib + + +def filter_changes(line): + # Skip diff headers + if line.startswith("---") or line.startswith("+++"): + return False + + # Only count lines that changed + return line.startswith("-") or line.startswith("+") + + +def run(): + + parser = argparse.ArgumentParser( + description="Classify output of taskgraph for CI analsyis" + ) + parser.add_argument( + "path", + type=pathlib.Path, + help="Folder containing all the TXT files from taskgraph target.", + ) + parser.add_argument( + "threshold", + type=int, + help="Minimum number of lines to trigger a warning on taskgraph output.", + ) + args = parser.parse_args() + + out = {"files": {}, "status": "OK", "threshold": args.threshold} + for path in args.path.glob("*.txt"): + + with path.open() as f: + nb = len(list(filter(filter_changes, f.readlines()))) + + out["files"][path.stem] = { + "nb": nb, + "status": "WARNING" if nb >= args.threshold else "OK", + } + + if nb >= args.threshold: + out["status"] = "WARNING" + + (args.path / "summary.json").write_text(json.dumps(out, sort_keys=True, indent=4)) + + +if __name__ == "__main__": + run() |