mirror of
https://github.com/Abdess/retroarch_system.git
synced 2026-04-13 04:12:33 -05:00
fix: verify functions handle flat zip extraction
This commit is contained in:
@@ -2432,6 +2432,11 @@ def _run_verify_packs(args):
|
||||
with zipfile.ZipFile(zip_path) as zf:
|
||||
zf.extractall(extract_dir)
|
||||
|
||||
# Auto-detect flat vs nested extraction
|
||||
is_flat = bool(base_dest) and not os.path.isdir(
|
||||
os.path.join(extract_dir, base_dest)
|
||||
)
|
||||
|
||||
missing = []
|
||||
hash_fail = []
|
||||
ok = 0
|
||||
@@ -2442,7 +2447,7 @@ def _run_verify_packs(args):
|
||||
continue
|
||||
fp = (
|
||||
os.path.join(extract_dir, base_dest, dest)
|
||||
if base_dest
|
||||
if base_dest and not is_flat
|
||||
else os.path.join(extract_dir, dest)
|
||||
)
|
||||
# Case-insensitive fallback
|
||||
|
||||
@@ -3383,10 +3383,17 @@ class TestE2E(unittest.TestCase):
|
||||
registry_path,
|
||||
emulators_dir=self.emulators_dir,
|
||||
)
|
||||
# Detect flat vs nested ZIP to build expected paths
|
||||
base = manifest.get("base_destination", "")
|
||||
is_flat = bool(base) and not any(
|
||||
n.startswith(base + "/") for n in zip_names
|
||||
)
|
||||
manifest_dests = set()
|
||||
for f in manifest["files"]:
|
||||
d = f"{base}/{f['dest']}" if base else f["dest"]
|
||||
if base and not is_flat:
|
||||
d = f"{base}/{f['dest']}"
|
||||
else:
|
||||
d = f["dest"]
|
||||
manifest_dests.add(d)
|
||||
|
||||
self.assertEqual(manifest_dests, zip_names)
|
||||
|
||||
Reference in New Issue
Block a user