#!/usr/bin/env python3 """Exercise camera defaults/errors and single-frame/movie agreement (CPU PNG builds).""" import os from pathlib import Path import struct import subprocess import sys import tempfile import zlib BUILD = Path(sys.argv[1] if len(sys.argv) > 1 else 'build/Release').resolve() ENV = dict(os.environ, OMP_NUM_THREADS='4') def run(binary, *args, ok=True): result = subprocess.run([str(binary), *map(str, args)], env=ENV, capture_output=True, text=True) if (result.returncode == 0) != ok: raise AssertionError(f'{binary.name} {args}: {result.returncode}\n{result.stderr}') return result def image_payload(path): data = path.read_bytes() assert data[:8] == b'\x89PNG\r\n\x1a\n' offset, compressed = 8, bytearray() while offset < len(data): count, kind = struct.unpack_from('>I4s', data, offset) payload = data[offset + 8:offset + 8 + count] if kind == b'IHDR': assert struct.unpack_from('>II', payload) == (64, 48) if kind == b'IDAT': compressed.extend(payload) offset += count + 12 raw = zlib.decompress(compressed) assert any(raw), f'empty image: {path}' return raw def map_vertices(path): data = path.read_bytes() assert data[:8] == b'GRLENS\x01\x00' assert struct.unpack_from('