#!/bin/bash # Doza Assist - Testes automatizados (macOS) # Sobe um nivel: o script vive em admin/, o projeto e a pasta pai SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" APP_DIR="$PROJECT_DIR/code" VENV_PY="$APP_DIR/.venv/bin/python3" # Cores (so quando a saida e um terminal) if [ -t 1 ]; then C_CYAN=$'\033[36m'; C_GREEN=$'\033[32m'; C_RED=$'\033[31m' C_YELLOW=$'\033[33m'; C_OFF=$'\033[0m' else C_CYAN=''; C_GREEN=''; C_RED=''; C_YELLOW=''; C_OFF='' fi echo echo "${C_CYAN}============================================================${C_OFF}" echo "${C_CYAN} DOZA ASSIST - TESTES AUTOMATIZADOS${C_OFF}" echo "${C_CYAN}============================================================${C_OFF}" echo if [ ! -x "$VENV_PY" ]; then echo "${C_RED}ERRO: ambiente Python nao encontrado:${C_OFF}" echo "${C_YELLOW}$VENV_PY${C_OFF}" echo echo "Execute primeiro a instalacao do projeto para criar a pasta .venv:" echo " admin/install.command" echo exit 1 fi cd "$APP_DIR" || exit 1 export PYTHONUTF8=1 # pytest nao consta em requirements.txt; instala sob demanda no venv do projeto if ! "$VENV_PY" -c "import pytest" >/dev/null 2>&1; then echo "${C_YELLOW}pytest nao encontrado no venv. Instalando...${C_OFF}" if ! "$VENV_PY" -m pip install -q pytest; then echo "${C_RED}ERRO: falha ao instalar o pytest.${C_OFF}" exit 1 fi echo "${C_GREEN}pytest instalado.${C_OFF}" echo fi echo "${C_CYAN}Cada teste aprovado aparecera abaixo como PASSED em verde.${C_OFF}" echo "${C_CYAN}Falhas aparecerao como FAILED em vermelho, com o motivo resumido.${C_OFF}" echo "$VENV_PY" -m pytest -vv --tb=short -ra --color=yes "$@" TEST_EXIT=$? echo echo "============================================================" if [ "$TEST_EXIT" -eq 0 ]; then echo "${C_GREEN} TODOS OS TESTES FORAM APROVADOS.${C_OFF}" echo "============================================================" echo exit 0 fi echo "${C_RED} EXISTEM TESTES COM FALHA. Veja os itens FAILED acima.${C_OFF}" echo "============================================================" echo exit "$TEST_EXIT"