"""Tests for the cached-showcase registry + loader. No gradio/models needed. Run: .venv/bin/python src/examples_test.py (or pytest) """ import json import os import sys import tempfile sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) from src import examples # noqa: E402 def test_three_examples_span_the_slider(): assert [e["level"] for e in examples.EXAMPLES] == [1, 5, 10] assert len({e["id"] for e in examples.EXAMPLES}) == 3 for e in examples.EXAMPLES: assert e["resume"].strip() and e["jd"].strip() and e["genre"] def test_load_example_missing_media_is_all_none(): examples.EX_DIR = tempfile.mkdtemp() # empty ex, lyr, tr, song, vid = examples.load_example(0) assert ex["id"] == examples.EXAMPLES[0]["id"] assert lyr is None and tr is None and song is None and vid is None assert examples.has_cache(0) is False def test_load_example_reads_committed_bundle(): d = tempfile.mkdtemp() examples.EX_DIR = d eid = examples.EXAMPLES[2]["id"] with open(os.path.join(d, f"{eid}.lyrics.txt"), "w", encoding="utf-8") as f: f.write('🎵 "x" — Drill\n[verse]\nhi') with open(os.path.join(d, f"{eid}.trace.json"), "w", encoding="utf-8") as f: json.dump({"engine": "gpt-oss-20b"}, f) with open(os.path.join(d, f"{eid}.song.mp3"), "wb") as f: f.write(b"ID3fake") ex, lyr, tr, song, vid = examples.load_example(2) assert "[verse]" in lyr and tr["engine"] == "gpt-oss-20b" assert song.endswith(f"{eid}.song.mp3") and vid is None # no video file present assert examples.has_cache(2) is True def _run(): fns = {k: v for k, v in globals().items() if k.startswith("test_") and callable(v)} failed = 0 for name, fn in fns.items(): try: fn() print(f"PASS {name}") except Exception as e: failed += 1 import traceback print(f"FAIL {name}: {e}") traceback.print_exc() print(f"\n{len(fns) - failed}/{len(fns)} passed") sys.exit(1 if failed else 0) if __name__ == "__main__": _run()