"""Explicit standalone Terrain selections never approve omitted or animated art.""" import argparse import contextlib import copy import hashlib import io import json import os import struct import tempfile import unittest from pathlib import Path from unittest.mock import patch from PIL import Image import hd_job_queue as queue import hd_register_reviewed as registrar from hd_candidate_review import binding_digest, proposal_frames class StandaloneTerrainRegistrationTest(unittest.TestCase): # Exact safe12/safe13 membership from the frozen independent source plan. SELECTED = [ ["10530", "10532", "10533", "10534", "10537", "10538", "10539", "1053a", "1053b", "1053c", "1053d", "1053f"], ["10540", "10541", "10542", "10543", "10545", "10546", "10547", "10548", "10549", "1054a", "1054b", "1054d", "1054e"], ] START_ASSET = 0x10530 def setUp(self): temporary = tempfile.TemporaryDirectory() self.addCleanup(temporary.cleanup) self.project = Path(temporary.name) / "project" self.data = Path(temporary.name) / "data" self.hd = self.data / "hd" self.hd.mkdir(parents=True) (self.data / "misc").mkdir() (self.project / "src").mkdir(parents=True) for name in ["assets.rs", "hd.rs"]: (self.project / "src" / name).write_text("synthetic source freshness fixture") self.library = self.project / "target/fixture.rlib" self.library.parent.mkdir() self.library.write_bytes(b"synthetic immutable library; not a real runtime claim") os.utime(self.library, ns=(2_000_000_000_000_000_000,) * 2) palette = bytes(value // 4 for value in range(256) for _ in range(3)) self.palette = self.data / "misc/PALETTE_DAT" self.palette.write_bytes(palette) self.entries = [f"{self.START_ASSET-1:05x} 0 tiles/STARTG1TILES"] self.jobs = [] self.pictures = [] all_bindings = {} for number, selected in enumerate(self.SELECTED): start = self.START_ASSET + number * 16 identity = f"terrain-{start:05x}-{start+15:05x}" directory = self.hd / "jobs" / identity directory.mkdir(parents=True) targets, sequences, records, approvals, masks, artwork = [], [], [], {}, [], {} for offset in range(16): asset = f"{start + offset:05x}" relative = f"misc/source-{asset}" payload = struct.pack("