mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-16 16:33:27 -05:00
fix: link systems to the folder of their files
This commit is contained in:
1 parent
53621fa689
commit
606141a61d
2 files changed
+94
-15
No files matched your search
@@ -0,0 +1,60 @@
|
||||
"""A platform system links to the page of the folder its files live in.
|
||||
|
||||
The site mapped each system by the bare name of its first file, the last
|
||||
console written winning: MiSTer's boot.rom sits under a dozen consoles, so
|
||||
wonderswan and tiger-game-com linked to VideoBrain, ngpc and tandy-coco to
|
||||
TI-99. Reads the repository: skips when the database is absent.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
import sys
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
sys.path.insert(0, str(REPO_ROOT / "scripts"))
|
||||
|
||||
import generate_site as gs # noqa: E402
|
||||
|
||||
|
||||
class LinksFollowContent(unittest.TestCase):
|
||||
def test_an_ambiguous_name_places_nothing(self):
|
||||
names = {"boot.rom": {("VideoBrain", "VideoBrain"), ("Bandai", "WonderSwan")}}
|
||||
files = [{"name": "boot.rom", "sha1": "0" * 40}]
|
||||
self.assertIsNone(gs._system_folder(files, {"files": {}, "indexes": {}}, names))
|
||||
names["only.rom"] = {("Bandai", "WonderSwan")}
|
||||
files.append({"name": "only.rom"})
|
||||
self.assertEqual(
|
||||
gs._system_folder(files, {"files": {}, "indexes": {}}, names),
|
||||
("Bandai", "WonderSwan"),
|
||||
)
|
||||
|
||||
def test_mister_systems(self):
|
||||
if not (REPO_ROOT / "database.json").exists():
|
||||
self.skipTest("database.json is not built")
|
||||
previous = os.getcwd()
|
||||
os.chdir(REPO_ROOT)
|
||||
self.addCleanup(os.chdir, previous)
|
||||
from common import load_database, load_platform_config
|
||||
|
||||
db = load_database("database.json")
|
||||
config = load_platform_config("misterfpga")
|
||||
names: dict = {}
|
||||
for mfr, consoles in gs._group_by_manufacturer(db).items():
|
||||
for console, entries in consoles.items():
|
||||
for entry in entries:
|
||||
names.setdefault(entry["name"], set()).add((mfr, console))
|
||||
expected = {"wonderswan": "WonderSwan", "ngpc": "Neo Geo Pocket"}
|
||||
for sys_id, console in expected.items():
|
||||
system = config["systems"].get(sys_id)
|
||||
if system is None:
|
||||
continue
|
||||
with self.subTest(system=sys_id):
|
||||
place = gs._system_folder(system.get("files", []), db, names)
|
||||
self.assertEqual(place and place[1], console)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user