Files
libretro/tests/test_variant_identity.py
T
Abdessamad Derraz d64129def8 fix: file the WonderMega ROM under its own name
The LaserActive v1.05 variant read WONDER-MEGA BOOTROM 1.00W at 0x100, as No-Intro and TOSEC name it. It moves to the Mega CD tree and the catalogued v1.05 (md5 927df773) takes its place.
2026-10-18 19:28:48 +02:00

71 lines
2.4 KiB
Python

"""A variant is another revision of its primary, and its catalog name says so.
The LaserActive PAC-S1 v1.05 variant was the WonderMega v1.00W boot ROM:
No-Intro and TOSEC both named it, and the name shared no word with the
path it was filed under. A revision of the same machine always shares one
(machine, maker or file stem). Reads the repository: skips without the
database.
"""
from __future__ import annotations
import json
import re
import unittest
from pathlib import Path
REPO_ROOT = Path(__file__).resolve().parents[1]
_GENERIC = {
"bios", "japan", "europe", "world", "boot", "firmware", "version",
"system", "rom", "bin", "usa", "the",
}
def _words(text: str) -> set[str]:
return {
w for w in re.split(r"[^a-z0-9]+", text.lower())
if len(w) >= 3 and not w.isdigit() and w not in _GENERIC
}
def catalog_words(provenance: dict) -> set[str]:
words: set[str] = set()
for record in provenance.values():
for key in ("name", "description", "dat"):
words |= _words(record.get(key, ""))
return words
class VariantsMatchTheirCatalogName(unittest.TestCase):
def test_the_rule_catches_the_wondermega_case(self):
provenance = {
"no-intro": {"dat": "Sega - Mega Drive - Genesis",
"name": "[BIOS] WonderMega (Japan) (En).md"},
"tosec": {"dat": "Sega Mega-CD & Sega CD - Firmware",
"name": "Wondermega v1.00W (1992-02-06)(Sega)(JP)(en).bin"},
}
old = "bios/Pioneer/LaserActive/.variants/[BIOS] LaserActive PAC-S1 (Japan) (v1.05).bin.d21fe71d"
self.assertFalse(_words(old) & catalog_words(provenance))
self.assertTrue(
_words("bios/Sega/Mega CD/[BIOS] WonderMega (Japan) (En).bin")
& catalog_words(provenance)
)
def test_every_catalogued_variant(self):
db_path = REPO_ROOT / "database.json"
if not db_path.exists():
self.skipTest("database.json is not built")
files = json.loads(db_path.read_text(encoding="utf-8"))["files"]
foreign = [
entry["path"]
for entry in files.values()
if "/.variants/" in entry["path"] and entry.get("provenance")
and not _words(entry["path"]) & catalog_words(entry["provenance"])
]
self.assertEqual(foreign, [])
if __name__ == "__main__":
unittest.main()