feat: add test/coverage and build verification options to start.sh

- Option 7: Run tests with coverage (go test + vitest)
- Option 8: Verify build for backend, marketplace, and backoffice
- Also accessible via --test/-t and --build/-B CLI flags
This commit is contained in:
Tiago Yamamoto 2025-12-26 22:39:53 -03:00
parent 59c0fe7449
commit aaa304c256

141
start.sh
View file

@ -303,6 +303,121 @@ reset_db() {
echo -e "${GREEN}✨ Concluído!${NC}\n" echo -e "${GREEN}✨ Concluído!${NC}\n"
} }
# Função para rodar testes e exibir cobertura
run_tests() {
echo -e "\n${BLUE}🧪 Executando Testes...${NC}\n"
# Backend Go Tests
echo -e "${CYAN}━━━ Backend Go ━━━${NC}"
cd "$PROJECT_ROOT/backend"
if [ -f ".env" ]; then
set -a
source .env
set +a
fi
echo -e "${YELLOW} ⏳ Executando go test com cobertura...${NC}"
go test -coverprofile=coverage.out ./... 2>&1
BACKEND_EXIT=$?
if [ $BACKEND_EXIT -eq 0 ]; then
echo -e "${GREEN} ✓ Testes do backend passaram!${NC}"
echo -e "${CYAN} 📊 Cobertura:${NC}"
go tool cover -func=coverage.out | tail -1
echo -e "\n${YELLOW} 💡 Para ver cobertura detalhada: cd backend && go tool cover -html=coverage.out${NC}"
else
echo -e "${RED} ✗ Alguns testes falharam${NC}"
fi
echo ""
# Marketplace Tests
echo -e "${CYAN}━━━ Marketplace React ━━━${NC}"
cd "$PROJECT_ROOT/marketplace"
if [ -d "node_modules" ]; then
echo -e "${YELLOW} ⏳ Executando vitest...${NC}"
npm run test -- --coverage --run 2>&1
MARKET_EXIT=$?
if [ $MARKET_EXIT -eq 0 ]; then
echo -e "${GREEN} ✓ Testes do marketplace passaram!${NC}"
else
echo -e "${RED} ✗ Alguns testes falharam${NC}"
fi
else
echo -e "${YELLOW} ⚠ node_modules não encontrado. Execute: npm install${NC}"
fi
echo -e "\n${GREEN}✨ Testes concluídos!${NC}\n"
}
# Função para verificar build de todos os projetos
run_build_check() {
echo -e "\n${BLUE}🔨 Verificando Build...${NC}\n"
ALL_OK=true
# Backend Go Build
echo -e "${CYAN}━━━ Backend Go ━━━${NC}"
cd "$PROJECT_ROOT/backend"
echo -e "${YELLOW} ⏳ go build ./...${NC}"
if go build ./... 2>&1; then
echo -e "${GREEN} ✓ Build OK${NC}"
else
echo -e "${RED} ✗ Build falhou${NC}"
ALL_OK=false
fi
echo ""
# Marketplace Build
echo -e "${CYAN}━━━ Marketplace React ━━━${NC}"
cd "$PROJECT_ROOT/marketplace"
if [ -d "node_modules" ]; then
echo -e "${YELLOW} ⏳ npm run build${NC}"
if npm run build 2>&1; then
echo -e "${GREEN} ✓ Build OK${NC}"
else
echo -e "${RED} ✗ Build falhou${NC}"
ALL_OK=false
fi
else
echo -e "${YELLOW} ⚠ node_modules não encontrado. Execute: npm install${NC}"
fi
echo ""
# Backoffice Build (if exists)
if [ -d "$PROJECT_ROOT/backoffice" ]; then
echo -e "${CYAN}━━━ Backoffice NestJS ━━━${NC}"
cd "$PROJECT_ROOT/backoffice"
if [ -d "node_modules" ]; then
PKG_MANAGER="npm"
command -v pnpm &>/dev/null && PKG_MANAGER="pnpm"
echo -e "${YELLOW}$PKG_MANAGER run build${NC}"
if $PKG_MANAGER run build 2>&1; then
echo -e "${GREEN} ✓ Build OK${NC}"
else
echo -e "${RED} ✗ Build falhou${NC}"
ALL_OK=false
fi
else
echo -e "${YELLOW} ⚠ node_modules não encontrado${NC}"
fi
echo ""
fi
if [ "$ALL_OK" = true ]; then
echo -e "${GREEN}✨ Todos os builds passaram!${NC}\n"
else
echo -e "${RED}❌ Alguns builds falharam. Verifique os erros acima.${NC}\n"
fi
}
# Função para exibir o menu # Função para exibir o menu
show_menu() { show_menu() {
echo -e "\n${YELLOW}Selecione o serviço para iniciar:${NC}\n" echo -e "\n${YELLOW}Selecione o serviço para iniciar:${NC}\n"
@ -311,10 +426,12 @@ show_menu() {
echo -e " ${BLUE}3)${NC} Marketplace React ${CYAN}(porta 5173)${NC}" echo -e " ${BLUE}3)${NC} Marketplace React ${CYAN}(porta 5173)${NC}"
echo -e " ${BLUE}4)${NC} Website Fresh/Deno ${CYAN}(porta 8000)${NC}" echo -e " ${BLUE}4)${NC} Website Fresh/Deno ${CYAN}(porta 8000)${NC}"
echo -e "" echo -e ""
echo -e " ${PURPLE}6)${NC} Resetar DB (Seed) ${RED}(Destrutivo)${NC}"
echo -e ""
echo -e " ${GREEN}5)${NC} Iniciar Todos os Serviços" echo -e " ${GREEN}5)${NC} Iniciar Todos os Serviços"
echo -e "" echo -e ""
echo -e " ${PURPLE}6)${NC} Resetar DB (Seed) ${RED}(Destrutivo)${NC}"
echo -e " ${YELLOW}7)${NC} Rodar Testes ${CYAN}(com cobertura)${NC}"
echo -e " ${YELLOW}8)${NC} Verificar Build ${CYAN}(frontend + backend)${NC}"
echo -e ""
echo -e " ${RED}0)${NC} Sair" echo -e " ${RED}0)${NC} Sair"
echo -e "" echo -e ""
} }
@ -369,6 +486,16 @@ if [ $# -gt 0 ]; then
start_all_services start_all_services
exit 0 exit 0
;; ;;
--test|-t|7)
show_banner
run_tests
exit 0
;;
--build|-B|8)
show_banner
run_build_check
exit 0
;;
--help|-h) --help|-h)
show_banner show_banner
echo "Uso: $0 [OPÇÃO]" echo "Uso: $0 [OPÇÃO]"
@ -380,6 +507,8 @@ if [ $# -gt 0 ]; then
echo " --website, -w, 4 Iniciar Website Deno (porta 8000)" echo " --website, -w, 4 Iniciar Website Deno (porta 8000)"
echo " --seed, -s, 6 Resetar DB e rodar Seed (com --force)" echo " --seed, -s, 6 Resetar DB e rodar Seed (com --force)"
echo " --all, -a, 5 Iniciar todos os serviços" echo " --all, -a, 5 Iniciar todos os serviços"
echo " --test, -t, 7 Rodar testes com cobertura"
echo " --build, -B, 8 Verificar build de todos os projetos"
echo " --help, -h Mostrar esta ajuda" echo " --help, -h Mostrar esta ajuda"
echo "" echo ""
exit 0 exit 0
@ -430,6 +559,14 @@ while true; do
reset_db reset_db
break break
;; ;;
7)
run_tests
break
;;
8)
run_build_check
break
;;
5) 5)
start_all_services start_all_services
break break