43 lines
1.4 KiB
Python
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")
|