godosa-engine

git clone https://git.godosa.eu/godosa-engine

master

raw · 1004 bytes

#!/usr/bin/env python3
"""Compare the `digest <frame> <time> <hex>` lines of two run logs (deterministic runs).

Usage: digest_compare.py A.log B.log   → exit 0 when equal, 1 with the first difference.
"""
import sys
from pathlib import Path


def digests(path: str) -> list[str]:
    return [line.strip() for line in Path(path).read_text(errors="replace").splitlines() if line.startswith("digest ")]


def main(argv: list[str]) -> int:
    if len(argv) != 3:
        print(__doc__.strip())
        return 2
    a, b = digests(argv[1]), digests(argv[2])
    if not a and not b:
        print("FAIL: no digest lines")
        return 1
    for k, (x, y) in enumerate(zip(a, b), 1):
        if x != y:
            print(f"FAIL: digest {k} differs\n  {x}\n  {y}")
            return 1
    if len(a) != len(b):
        print(f"FAIL: {len(a)} vs {len(b)} digests")
        return 1
    print(f"ok: {len(a)} digests equal, last {a[-1]}")
    return 0


if __name__ == "__main__":
    sys.exit(main(sys.argv))