fix(arje): validate.sh robusto frente a timeout 124 + pipefail

timeout 5 retorna 124 al matar ente-zero (dev mode termina solo). Bajo
set -euo pipefail eso abortaba el script antes de chequear el log, así
que build-arje-initrd.sh reportaba "seed inválida" aunque la Card
estuviera bien.

Cambios:
- Capturamos el output a un archivo (no pipeline) con set +e alrededor
  del timeout, así el exit code no importa.
- El check sigue siendo grep -q sobre "Tarjeta Semilla cargada y
  validada"; si falla, ahora imprimimos las primeras 40 líneas del log
  al stderr para debug.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
sergio
2026-05-18 19:09:17 +00:00
parent 074d8bcbc8
commit e4882033cf
+16 -3
View File
@@ -29,12 +29,25 @@ trap 'rm -rf "$SCRATCH"' EXIT
cp "$SEED" "$SCRATCH/seed.card.json" cp "$SEED" "$SCRATCH/seed.card.json"
cd "$SCRATCH" cd "$SCRATCH"
timeout 5 "$BIN" 2>&1 | tee /tmp/arje-validate.log | \ LOG="$SCRATCH/ente-zero.log"
grep -E "Tarjeta Semilla cargada|semilla inválida|JSON no contiene|Caused by" | head -5
if grep -q "Tarjeta Semilla cargada y validada" /tmp/arje-validate.log; then # `timeout` retorna 124 al matar el proceso (dev-mode termina solo a los 4 s
# de todas formas). Aceptamos cualquier exit code aquí; lo que importa es lo
# que escribió al log.
set +e
timeout 5 "$BIN" >"$LOG" 2>&1
set -e
# Mostrar las líneas relevantes (no es fatal si no aparecen — el check real
# es el `grep -q` siguiente).
grep -E "Tarjeta Semilla cargada|semilla inválida|JSON no contiene|Caused by" \
"$LOG" | head -5 || true
if grep -q "Tarjeta Semilla cargada y validada" "$LOG"; then
echo "[validate] OK: $SEED" echo "[validate] OK: $SEED"
exit 0 exit 0
fi fi
echo "[validate] FALLÓ: $SEED" >&2 echo "[validate] FALLÓ: $SEED" >&2
echo "[validate] log completo:" >&2
sed -n '1,40p' "$LOG" >&2
exit 1 exit 1