Ctrl K
ComunidadGuías…

tests/installer/test_headless.py

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
"""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