Files
C.E.L_Slide_test2/.orchestrator/tmp/u4_smoke.py
T

43 lines
1.4 KiB
Python

import os, sys, tempfile
from pathlib import Path
sys.path.insert(0, r"D:\ad-hoc\kei\design_agent\scripts")
import generate_frame_previews as m
with tempfile.TemporaryDirectory() as td:
bd = Path(td) / "blocks"
fd = bd / "FRAME_X"
fd.mkdir(parents=True)
idx = fd / "index.html"
png = fd / "preview.png"
idx.write_text("<html><body><div class=slide></div></body></html>", encoding="utf-8")
png.write_bytes(b"FAKEPNG")
rows = m.discover(bd)
assert len(rows) == 1
r = rows[0]
assert r.has_index and r.has_preview
assert m.is_unchanged(r, None) is False, "None last_entry must yield False"
sha = m._sha256_file(idx)
t = idx.stat().st_mtime + 1
os.utime(png, (t, t))
assert m.is_unchanged(r, {"index_sha256": sha}) is True, "matching sha+newer png must yield True"
older = idx.stat().st_mtime - 10
os.utime(png, (older, older))
assert m.is_unchanged(r, {"index_sha256": sha}) is False, "stale png must yield False"
os.utime(png, (t, t))
assert m.is_unchanged(r, {"index_sha256": "deadbeef"}) is False, "mismatched sha must yield False"
assert m.is_unchanged(r, {}) is False, "missing recorded sha must yield False"
idx.unlink()
rows2 = m.discover(bd)
r2 = rows2[0]
assert not r2.has_index
assert m.is_unchanged(r2, {"index_sha256": sha}) is False, "missing index must yield False"
print("u4_predicate_ok")