# tests/test_inauguration.py """Tâche 3 (le relais) — L'INAUGURATION : la démo du takeover. Un SEUL test (inauguration() est coûteuse quand le noyau 1B vit dans le python) qui doit passer dans les DEUX venvs : - mingw sans torch : le cerveau se dégrade en une ligne honnête d'absence, les organes portent toute la démo (marqueurs 2/3/4/5 + finale) ; - torch + brain/FRACTUS_BIRTH.pt : en plus, le statut réel du cerveau (strict 440/440) et la parole du noyau rapportée VERBATIM (word salad accepté et documenté — docs/NAISSANCE.md). """ import re from demo.inauguration import inauguration FINAL = "[FRACTUS-VORAX] Le relais est pris. L'entraînement est fini. Il mange." def _n_atomes(status_line: str) -> int: """Extrait le compteur d'une ligne ``[VORAX] brain: N atomes, ...``.""" m = re.search(r"(\d+) atomes", status_line) assert m, f"ligne sans compteur d'atomes: {status_line!r}" return int(m.group(1)) def test_inauguration(): lines = inauguration() out = "\n".join(lines) # --- marqueurs TOUJOURS présents (organes — les deux venvs) --- assert "[FRACTUS-VORAX] 1/7 noyau de naissance" in out # statut du cerveau assert "[FRACTUS-VORAX] 2/7 ingestion" in out assert "[FRACTUS-VORAX] 3/7 question exacte" in out assert "tokyo" in out and "FAIT" in out # japon -> carte FAIT assert "[FRACTUS-VORAX] 4/7 typo" in out assert "ANALOGIE" in out and "paris" in out # 'franc' -> analogie assert "[FRACTUS-VORAX] 5/7 session REPL scriptée" in out assert lines[-1] == FINAL # la ligne du relais pris # --- la session écrit : n atomes CROÎT d'un :status à l'autre --- statuses = [l for l in lines if l.startswith("[VORAX] brain:")] assert len(statuses) == 2, "deux :status attendus (avant/après la question)" assert _n_atomes(statuses[1]) > _n_atomes(statuses[0]) # --- branche noyau : skip-friendly (dépend de l'environnement) --- if "cerveau: cte" in out: # torch + tokenizers + cerveau de naissance présents assert "strict 440/440" in out assert "[FRACTUS-VORAX] 6/7 la parole du noyau" in out # la parole, VERBATIM et honnête (word salad accepté) — ou l'aveu # muet si le tokenizer BPE est indisponible dans cet environnement. assert '[FRACTUS-VORAX] noyau: "' in out or "noyau muet" in out else: # mingw sans torch (ou cerveau absent) — les organes portent la démo assert "cerveau absent dans cet environnement" in out assert "6/7" not in out # --- console-safe : jamais → ni — (cp1252-hostiles) --- assert all("→" not in l and "—" not in l for l in lines)