tests/installer/test_headless.py
Rama main · réplica de lectura del repositorio original.
"""Installeur sans interface (roadmap #44)."""
import pytest
from installer.core.catalog import load_catalog
from installer.core.events import AskBroker, Output, StepChange
from installer.headless import main, make_emit, select_mcps
def test_question_recoit_sa_valeur_par_defaut():
lines, ref = [], []
emit = make_emit(lines.append, ref)
ref.append(AskBroker(emit=emit, timeout=2))
assert ref[0].ask("confirm", "Installer Ollama ?", default=True) is True
assert ref[0].ask("input", "Hote ?", default="") == ""
assert lines == ["[auto] Installer Ollama ? -> True", "[auto] Hote ? -> ''"]
def test_sortie_texte():
lines = []
emit = make_emit(lines.append, [None])
emit(StepChange("venv", "err", detail="pip a echoue"))
emit(Output("Collecting rich"))
assert lines == ["[err] venv : pip a echoue", " Collecting rich"]
def test_selection_des_mcps():
catalog = load_catalog()
assert select_mcps(catalog, "") == ()
premier = catalog[0].id
assert [m.id for m in select_mcps(catalog, f" {premier} ")] == [premier]
with pytest.raises(SystemExit, match="inconnu"):
select_mcps(catalog, "nexistepas")
def test_demo_de_bout_en_bout(tmp_path, capsys):
assert main(["--demo", "--lyra-dir", str(tmp_path / "lyra")]) == 0
out = capsys.readouterr().out
assert "INSTALLATION OK" in out and "[ok] daemon" in out