From d01c1b7085b3882bc7042a4e084341938ec3bbf1 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Sat, 17 Oct 2026 20:31:39 +0200 Subject: [PATCH] fix: count romset members on the Wanted page --- scripts/provenance_report.py | 5 ++++- tests/test_audit_regressions.py | 20 ++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/scripts/provenance_report.py b/scripts/provenance_report.py index 51e18e9b..57d31d54 100644 --- a/scripts/provenance_report.py +++ b/scripts/provenance_report.py @@ -84,7 +84,10 @@ def build_report(db: dict, snapshots: dict, members: dict | None = None) -> dict split the target list is swamped by content the project never ships. """ by_sha1 = db.get("files", {}) - members = members or {} + # The members a romset holds are held too, whoever asks: the site built + # its Wanted page without them and asked the public for the Astrocade + # and Gamate BIOS that astrocdw.zip and gamate.zip already carry. + members = archive_members(db) if members is None else members by_md5_size = { (entry.get("md5", ""), entry.get("size", 0)) for entry in by_sha1.values() } diff --git a/tests/test_audit_regressions.py b/tests/test_audit_regressions.py index 5eed1c0a..0152c9f8 100644 --- a/tests/test_audit_regressions.py +++ b/tests/test_audit_regressions.py @@ -3373,5 +3373,25 @@ class TestsRunOffline(unittest.TestCase): self.assertTrue(os.environ.get("RETROBIOS_OFFLINE")) + +class TheWantedPageCountsRomsetMembers(unittest.TestCase): + """The site called build_report without archive_members: the public + Wanted page asked for dumps the collection holds inside romsets.""" + + def test_members_are_read_unless_given(self): + from scripts import provenance_report + + calls = [] + + def members(db): + calls.append(db) + return {} + + with mock.patch.object(provenance_report, "archive_members", members): + provenance_report.build_report({"files": {}}, {}) + provenance_report.build_report({"files": {}}, {}, {}) + self.assertEqual(len(calls), 1) + + if __name__ == "__main__": unittest.main()