mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 13:33:24 -05:00
fix: reduce emulator packs by region after required-only
This commit is contained in:
1 parent
2e2fe2944c
commit
bb6669c362
3 files changed
+26
-3
No files matched your search
@@ -1257,7 +1257,9 @@ def generate_emulator_pack(
|
|||||||
os.makedirs(output_dir, exist_ok=True)
|
os.makedirs(output_dir, exist_ok=True)
|
||||||
|
|
||||||
region_drops: set[str] = (
|
region_drops: set[str] = (
|
||||||
emulator_region_drops(selected, standalone, regions) if regions else set()
|
emulator_region_drops(selected, standalone, regions, required_only)
|
||||||
|
if regions
|
||||||
|
else set()
|
||||||
)
|
)
|
||||||
|
|
||||||
total_files = 0
|
total_files = 0
|
||||||
|
|||||||
@@ -709,7 +709,10 @@ def platform_region_groups(
|
|||||||
return groups, extra_dests
|
return groups, extra_dests
|
||||||
|
|
||||||
def emulator_region_drops(
|
def emulator_region_drops(
|
||||||
selected: list[tuple[str, dict]], standalone: bool, regions: list[str]
|
selected: list[tuple[str, dict]],
|
||||||
|
standalone: bool,
|
||||||
|
regions: list[str],
|
||||||
|
required_only: bool = False,
|
||||||
) -> set[str]:
|
) -> set[str]:
|
||||||
"""Destinations an emulator-mode `--region` withdraws.
|
"""Destinations an emulator-mode `--region` withdraws.
|
||||||
|
|
||||||
@@ -726,7 +729,10 @@ def emulator_region_drops(
|
|||||||
region_groups: dict[str, list[tuple[str, str]]] = {}
|
region_groups: dict[str, list[tuple[str, str]]] = {}
|
||||||
for emu_name, profile in sorted(selected):
|
for emu_name, profile in sorted(selected):
|
||||||
structure = profile.get("pack_structure")
|
structure = profile.get("pack_structure")
|
||||||
for fe in filter_files_by_mode(profile.get("files", []), standalone):
|
# Decided over what the pack keeps, as on the platform side: an
|
||||||
|
# optional winner removed afterwards left its slot empty.
|
||||||
|
entries = filter_files_by_mode(profile.get("files", []), standalone)
|
||||||
|
for fe in _kept(entries, required_only):
|
||||||
dest = _resolve_destination(fe, structure, standalone)
|
dest = _resolve_destination(fe, structure, standalone)
|
||||||
if dest:
|
if dest:
|
||||||
group_id = _emulator_region_group(emu_name, profile, fe)
|
group_id = _emulator_region_group(emu_name, profile, fe)
|
||||||
|
|||||||
@@ -42,5 +42,20 @@ class RequiredOnlyBeforeRegion(unittest.TestCase):
|
|||||||
self.assertIn("required_only", {kw.arg for kw in call.keywords})
|
self.assertIn("required_only", {kw.arg for kw in call.keywords})
|
||||||
|
|
||||||
|
|
||||||
|
class EmulatorModeToo(unittest.TestCase):
|
||||||
|
"""--emulator mednafen_pce_fast --region us --required-only shipped 0 files:
|
||||||
|
the optional US cards won the group, then --required-only removed them."""
|
||||||
|
|
||||||
|
def test_the_required_card_survives(self):
|
||||||
|
from packextras import emulator_region_drops # noqa: PLC0415
|
||||||
|
|
||||||
|
profile = {"systems": ["nec-pc-engine"], "files": [
|
||||||
|
{"name": "syscard3.pce", "required": True, "region": ["japan"]},
|
||||||
|
{"name": "syscard3u.pce", "required": False, "region": ["north-america"]},
|
||||||
|
]}
|
||||||
|
drops = emulator_region_drops([("pce", profile)], False, ["north-america"], True)
|
||||||
|
self.assertNotIn("syscard3.pce", drops)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main()
|
unittest.main()
|
||||||
Reference in new issue
Block a user