Zum Inhalt

tests/test_gui_cli_command.py

from typer.testing import CliRunner

from touchstone.cli import app

runner = CliRunner()


def test_gui_command_without_extra_prints_install_hint(monkeypatch):
    """If FastAPI isn't importable, `touchstone gui` exits 1 with an install hint, no traceback."""
    import builtins

    real_import = builtins.__import__

    def block_gui(name, *a, **k):
        if name.startswith("touchstone.gui.app"):
            raise ImportError("No module named 'fastapi'")
        return real_import(name, *a, **k)

    monkeypatch.setattr(builtins, "__import__", block_gui)
    res = runner.invoke(app, ["gui"])
    assert res.exit_code == 1
    assert "pip install" in res.output and "[gui]" in res.output