#!/usr/bin/env python3 from pathlib import Path import hashlib,json,re,subprocess base=Path(__file__).resolve().parent repo=base.parents[1] logs=list(base.glob('final_*.log')) assert len(logs)==45 for p in logs:assert 'EXIT 0' in p.read_text(),p m=json.loads((base/'source_binary_manifest.json').read_text()) for name,info in m.items():assert hashlib.sha256((repo/name).read_bytes()).hexdigest()==info['sha256'],name m=json.loads((base/'events_manifest.json').read_text()) for name,info in m.items():assert hashlib.sha256((base/name).read_bytes()).hexdigest()==info['sha256'],name for p in [repo/'gpu_psf_acceleration_plan.md',repo/'nr_spacetime_movie_renderer_design.md',base.with_suffix('.md'),base/'README.md']: for target in re.findall(r'\]\(([^)]+)\)',p.read_text()): # Ignore TeX bracket/parenthesis adjacency; check local artifact links. if '://' not in target and re.search(r'\.(md|json|log|py|c|hip|txt)(#.*)?$',target): assert (p.parent/target.split('#')[0]).exists(),(p,target) subprocess.run(['git','diff','--check'],cwd=repo,check=True) print('PASS: 45 final runs; source/binary/input/event hashes; local documentation links; git diff --check')