@@ -2566,6 +2566,33 @@ reexec_neg() {
25662566reexec_neg
25672567reexec_ok " o bloco de variáveis conhecidas acha o kit depois do cd"
25682568
2569+ echo " cron numa VPS sem crontab nenhum (#715)"
2570+ # VPS nova não tem crontab para o root: `crontab -l` sai 1. As rodadas acima
2571+ # nunca mediram isso, porque o sandbox já tinha linhas quando elas agendavam — e
2572+ # o install.sh morria em "Ativando as automações" em toda VPS recém-criada. As
2573+ # duas funções rodam aqui sob o MESMO `set -euo pipefail` do install.sh, com o
2574+ # dublê de crontab apontado para um arquivo que não existe.
2575+ cron_vazio () (
2576+ # Subshell: `montar_vps` define VPS_* globais, e os blocos seguintes da suíte
2577+ # não podem herdar esta fixture.
2578+ montar_vps " $SUITE_TMP /cron-vazio" projeto < <( printf ' #!/bin/sh\nexit 0\n' )
2579+ local sandbox=" $SUITE_TMP /crontab-vazio.txt" ; rm -f " $sandbox "
2580+ local out rc
2581+ out=" $( cd " $VPS_PROJ " && env PATH=" $VPS_RAIZ /bin:$PATH " CRONTAB_SANDBOX=" $sandbox " \
2582+ INTERNAL_SECRET=segredo-de-teste NEXT_PUBLIC_APP_URL=https://crm.exemplo.com.br PROJECT_DIR=" $VPS_PROJ " \
2583+ bash -c ' set -euo pipefail; . "$1/_common.sh"; psql_run() { :; }
2584+ setup_event_log_drain_cron; setup_update_agent_cron; echo CHEGOU-AO-FIM' _ " $VPS_RAIZ " 2>&1 ) " \
2585+ && rc=0 || rc=$?
2586+ if [ $rc -ne 0 ] || ! printf ' %s' " $out " | grep -q CHEGOU-AO-FIM; then
2587+ printf ' ✗ agendar o cron numa VPS sem crontab derrubou o script (saída %s)\n' " $rc " ; return 1
2588+ fi
2589+ if [ " $( grep -c ' # deskcomm:' " $sandbox " 2> /dev/null) " != 2 ]; then
2590+ printf ' ✗ esperava 2 linhas (drain + agente) no crontab, veio %s\n' " $( grep -c ' # deskcomm:' " $sandbox " 2> /dev/null || echo 0) " ; return 1
2591+ fi
2592+ printf ' ✓ sem crontab prévio, drain e agente agendados e o script segue\n'
2593+ )
2594+ cron_vazio || fail=1
2595+
25692596echo " isolamento: a suíte não escreve no crontab da máquina"
25702597# Isto não é hipótese defensiva: os testes JÁ escreveram 10 linhas órfãs no
25712598# crontab do mantenedor, uma delas um `curl` com Bearer disparando a cada minuto
0 commit comments