mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-10-10 21:43:23 -05:00
fix: apply required-only to emulator pack archives
This commit is contained in:
1 parent
b2208d889e
commit
b3c7e76adf
2 files changed
+47
No files matched your search
@@ -1345,6 +1345,15 @@ def generate_emulator_pack(
|
||||
),
|
||||
{"name": archive_name},
|
||||
)
|
||||
if required_only and archive_entry.get("required") is False and all(
|
||||
member.get("required") is False
|
||||
for member in files
|
||||
if member.get("archive") == archive_name
|
||||
):
|
||||
# Optional as a whole: its own entry and every member it
|
||||
# carries. geolith's _Required pack held neocd.zip and
|
||||
# irrmaze.zip all the same.
|
||||
continue
|
||||
local_path, status = resolve_file(
|
||||
archive_entry,
|
||||
db,
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
"""--required-only reaches archives in emulator packs.
|
||||
|
||||
geolith declares neocd.zip and irrmaze.zip optional, members included, and
|
||||
its _Required pack held them anyway: the archive loop never read `required`.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import unittest
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
|
||||
REPO_ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
class RequiredOnlyArchives(unittest.TestCase):
|
||||
def test_optional_archives_stay_out(self):
|
||||
if not (REPO_ROOT / "database.json").is_file():
|
||||
self.skipTest("database.json not built")
|
||||
with tempfile.TemporaryDirectory(dir=REPO_ROOT / "tmp") as tmp:
|
||||
result = subprocess.run(
|
||||
[sys.executable, "scripts/generate_pack.py", "--emulator", "geolith",
|
||||
"--required-only", "--offline", "--output-dir", tmp],
|
||||
capture_output=True, text=True, cwd=REPO_ROOT, timeout=600,
|
||||
)
|
||||
self.assertEqual(result.returncode, 0, result.stdout + result.stderr)
|
||||
pack = next(Path(tmp).glob("*.zip"))
|
||||
names = set(zipfile.ZipFile(pack).namelist())
|
||||
self.assertNotIn("neocd.zip", names)
|
||||
self.assertNotIn("irrmaze.zip", names)
|
||||
self.assertIn("neogeo.zip", names)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user