From 866ee40209c117069c6048f9f010073953f25b2f Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Thu, 19 Mar 2026 08:57:45 +0100 Subject: [PATCH] feat: harmonize verify and pack output format Both tools now report: X files, Y/Z checks verified (N duplicate/inner checks), with the same check counts for the same platform. The duplicate/inner detail explains why checks > files (multiple YAML entries per ZIP for inner ROM verification, EmuDeck MD5 whitelists). File counts differ legitimately (verify counts resolved files on disk, pack counts files in the ZIP including data_directories). --- scripts/generate_pack.py | 5 ++++- scripts/verify.py | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/scripts/generate_pack.py b/scripts/generate_pack.py index 93956a36..a7a2a8e4 100644 --- a/scripts/generate_pack.py +++ b/scripts/generate_pack.py @@ -453,7 +453,10 @@ def generate_pack( if verification_mode == "existence": print(f" Generated {zip_path}: {total_files} files ({total_files - extra_count} platform{extras_msg}, {len(missing_files)} missing) [verification: existence]") else: - print(f" Generated {zip_path}: {total_files} files, {verified_checks}/{total_checks} checks verified, {len(untested_files)} untested, {len(missing_files)} missing [verification: {verification_mode}]") + checks_detail = "" + if total_checks != total_files: + checks_detail = f" ({total_checks - total_files} duplicate/inner checks)" + print(f" Generated {zip_path}: {total_files} files, {verified_checks}/{total_checks} checks verified{checks_detail}, {len(untested_files)} untested, {len(missing_files)} missing [verification: {verification_mode}]") return zip_path diff --git a/scripts/verify.py b/scripts/verify.py index 0e55fa2a..3beeba3e 100644 --- a/scripts/verify.py +++ b/scripts/verify.py @@ -219,10 +219,17 @@ def verify_platform(config: dict, db: dict) -> dict: untested = sum(1 for r in results if r["status"] == Status.UNTESTED) missing = sum(1 for r in results if r["status"] == Status.MISSING) + # Count unique files (by system/destination) for reporting + unique_files = set() + for r in results: + dest = r.get("path") or r["name"] + unique_files.add(dest) + return { "platform": platform, "verification_mode": mode, "total": len(results), + "unique_files": len(unique_files), "ok": ok, "untested": untested, "missing": missing, @@ -259,11 +266,14 @@ def main(): if not args.json: mode = result["verification_mode"] + uf = result["unique_files"] + total = result["total"] + checks_detail = f" ({total - uf} duplicate/inner checks)" if total != uf else "" if mode == "existence": - print(f"{result['platform']}: {result['ok']}/{result['total']} present, " + print(f"{result['platform']}: {uf} files, {result['ok']}/{total} checks present{checks_detail}, " f"{result['missing']} missing [verification: {mode}]") else: - print(f"{result['platform']}: {result['ok']}/{result['total']} verified, " + print(f"{result['platform']}: {uf} files, {result['ok']}/{total} checks verified{checks_detail}, " f"{result['untested']} untested, {result['missing']} missing [verification: {mode}]") for d in result["details"]: