Download app/tests/test_desinstalar.py from OpenTARS/openTARS: direct link, hf CLI and curl.
- Browser
- Download file 3.04 kB
-
https://huggingface.co/OpenTARS/openTARS/resolve/main/app/tests/test_desinstalar.py
- Command line
-
hf download hf://OpenTARS/openTARS/app/tests/test_desinstalar.py
-
curl -L -o test_desinstalar.py https://huggingface.co/OpenTARS/openTARS/resolve/main/app/tests/test_desinstalar.py
3.04 kB
| """5.2: opentars --desinstalar. Pergunta antes de apagar dados e, 脿 parte, os modelos oficiais; sem resposta n茫o apaga | |
| nada; o .deb s贸 mostra o comando do apt; a instala莽茫o por script chama o --remover do pr贸prio instalador.""" | |
| import os | |
| import sys | |
| import tempfile | |
| from pathlib import Path | |
| sys.path.insert(0, str(Path(__file__).resolve().parent)) | |
| from _util import RAIZ # noqa: E402,F401 | |
| import fake_ollama # noqa: E402 | |
| import tars_desinstalar as d # noqa: E402 | |
| import tars_gerenciar_modelos as gm # noqa: E402 | |
| casa = Path(tempfile.mkdtemp(prefix="opentars-desinst-")) | |
| os.environ.update(HOME=str(casa), XDG_CONFIG_HOME=str(casa / "cfg"), XDG_DATA_HOME=str(casa / "dados"), | |
| XDG_CACHE_HOME=str(casa / "cache"), TARS_DIR_LOG=str(casa / ".tars_log")) | |
| for pasta in ("cfg/opentars", "dados/opentars", ".tars_log"): | |
| (casa / pasta).mkdir(parents=True) | |
| (casa / ".tars_sessoes.json").write_text("{}") | |
| (casa / "opentars-autoteste.txt").write_text("relat贸rio") | |
| servidor, url = fake_ollama.subir(modelos=["ProjectOpenTARS/Gargantua-2:latest", "qwen3:4b"]) | |
| t = lambda chave, **k: chave # noqa: E731 | |
| apagados, rodados, soltos = [], [], [] | |
| original_apagar = gm.apagar | |
| gm.apagar = lambda nome, host: apagados.append(nome) or (True, "") | |
| original_pelo_script = d.tars_atualizacao.pelo_script | |
| try: | |
| # sem terminal para responder: nada sai | |
| def sem_resposta(_pergunta): | |
| raise EOFError | |
| d.tars_atualizacao.pelo_script = lambda: False | |
| assert d.executar(url, t, entrada=sem_resposta) == 0 | |
| assert (casa / ".tars_sessoes.json").exists() and (casa / "cfg/opentars").exists() and not apagados | |
| print("OK: sem resposta, n茫o apaga dados nem modelos") | |
| # "n茫o" para os dados, "sim" para os modelos: s贸 os oficiais saem, os outros modelos do Ollama ficam | |
| respostas = iter(["n", "s"]) | |
| d.executar(url, t, entrada=lambda _p: next(respostas)) | |
| assert (casa / "dados/opentars").exists() and apagados == ["ProjectOpenTARS/Gargantua-2:latest"], apagados | |
| print("OK: os modelos oficiais saem s贸 com o sim; o qwen3 da pessoa fica") | |
| # instalado pelo script no Linux: "sim" para os dados, chama o --remover do instalador; o relat贸rio fica | |
| d.tars_atualizacao.pelo_script = lambda: True | |
| respostas = iter(["s", "n"]) | |
| codigo = d.executar(url, t, entrada=lambda _p: next(respostas), | |
| rodar=lambda cmd: rodados.append(cmd) or type("R", (), {"returncode": 0})()) | |
| assert codigo == 0 and rodados and rodados[0][-1] == "--remover" and rodados[0][1].endswith("linux/instalar.sh"), rodados | |
| assert not any(x.exists() for x in (casa / ".tars_sessoes.json", casa / "cfg/opentars", casa / "dados/opentars", casa / ".tars_log")) | |
| assert (casa / "opentars-autoteste.txt").exists() | |
| print("OK: com o sim, conversas, configura莽玫es e registros saem; o removedor do script roda; o relat贸rio fica") | |
| finally: | |
| gm.apagar = original_apagar | |
| d.tars_atualizacao.pelo_script = original_pelo_script | |
| servidor.shutdown() | |
| print("test_desinstalar: TUDO OK.") | |