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
f159d35f18
commit
af030fdd6d
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)
|
||||
|
||||
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
|
||||
|
||||
@@ -709,7 +709,10 @@ def platform_region_groups(
|
||||
return groups, extra_dests
|
||||
|
||||
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]:
|
||||
"""Destinations an emulator-mode `--region` withdraws.
|
||||
|
||||
@@ -726,7 +729,10 @@ def emulator_region_drops(
|
||||
region_groups: dict[str, list[tuple[str, str]]] = {}
|
||||
for emu_name, profile in sorted(selected):
|
||||
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)
|
||||
if dest:
|
||||
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})
|
||||
|
||||
|
||||
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__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user