fix: one file under two spellings keeps both cores

BlastEm opens 32X_M_BIOS.bin and PicoDrive 32X_M_BIOS.BIN. On a case-insensitive platform the manifest kept the first and dropped the second core's claim, so an install narrowed to PicoDrive (RetroArch on Switch) lost the 32X BIOS its pack carries. The claim now joins the entry kept.
This commit is contained in:
Abdessamad Derraz committed 2026-10-20 11:27:08 +02:00
1 parent 312ba968bb
commit 6a852737a8
2 files changed
+39 -5

No files matched your search

+8 -2
View File
@@ -634,9 +634,15 @@ class InstallMatchesATargetManifest(unittest.TestCase):
full = self._manifest(platform)
built = self._manifest(platform, set(cores), target)
files, omitted = install.narrow_to_cores(full, cores)
# A case-insensitive platform reads one file under both
# spellings (BlastEm's 32X_M_BIOS.bin, PicoDrive's .BIN).
from common import load_platform_config
config = load_platform_config(platform, str(REPO_ROOT / "platforms"))
fold = str.lower if config.get("case_insensitive_fs") else str
self.assertEqual(
{(f["dest"], f["sha1"]) for f in files},
{(f["dest"], f["sha1"]) for f in built["files"]},
{(fold(f["dest"]), f["sha1"]) for f in files},
{(fold(f["dest"]), f["sha1"]) for f in built["files"]},
)
self.assertEqual(
{o["dest"] for o in omitted},