fix: hold data trees while packs are verified

This commit is contained in:
Abdessamad Derraz committed 2026-10-18 13:46:11 +02:00
1 parent fa34a9fe18
commit df597cbe7d
2 files changed
+11

No files matched your search

+3
View File
@@ -2993,6 +2993,9 @@ def _main(held: contextlib.ExitStack) -> None:
# Quick-exit modes: --verify-packs alone = verify existing packs only
# Combined with --all-variants, generation runs first then verify
if args.verify_packs and not args.all_variants:
# The check resolves core files against data/ like the build did;
# a refresh swapping a tree mid-check would judge another tree.
hold_data_dirs(held, load_data_dir_registry(args.platforms_dir))
with _pack_output_lock(args.output_dir, exclusive=False):
_run_verify_packs(args)
return
+8
View File
@@ -3615,6 +3615,14 @@ class ADataDirectoryIsHeldWhileRead(unittest.TestCase):
refresh = pack.index("results = refresh_all(")
self.assertIn("hold_data_dirs(held, data_registry)", pack[refresh:])
def test_verify_packs_alone_holds_the_trees(self):
# --verify-packs returned before the hold and resolved core files
# against data/ while a refresh could swap a tree.
pack = (ROOT / "scripts" / "generate_pack.py").read_text()
branch = pack.index("if args.verify_packs and not args.all_variants:")
run = pack.index("_run_verify_packs(args)", branch)
self.assertIn("hold_data_dirs(held,", pack[branch:run])
class EachRootReadsItsOwnRegistry(unittest.TestCase):
"""The release-asset registry was cached once per process whatever root