fix(prueba): el test de la fusion moria en silencio y pasaba por verde
Dos defectos del propio test, los dos del tipo que el repo persigue: 1. La ultima linea del bloque extraido es un `[ $_liberados -gt 0 ] && echo`, que devuelve 1 cuando no libera nada — y con `set -e` eso mataba el test ANTES de comprobar una sola cosa. La salida era "(bloque extraido: 23 lineas)" y nada mas, que se lee como que no habia nada que decir. 2. Sin `./target/release/takana` el bloque no puede preguntar las rutas declaradas, asi que no media nada y igual seguia. Ahora SALTA con exit 2 y lo dice: no saber no es estar bien. Verificado en las dos ramas: en el hub pasa los tres controles; en un worktree sin binario salta con exit 2 en vez de morir. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Delta semántico
Ninguna definición cambió: el cambio es de texto, documentación o datos.
1 archivos · +11 −0
diff --git a/scripts/probar-fusion-privilegio.sh b/scripts/probar-fusion-privilegio.sh
index cfd81bae..c156a0a3 100755
--- a/scripts/probar-fusion-privilegio.sh
+++ b/scripts/probar-fusion-privilegio.sh
@@ -20,11 +20,22 @@ printf 'soy el passwd de shadow\n' > "$H/usr/bin/passwd"; chmod 4755 "$H/usr/bin
printf 'soy el ls de uutils\n' > "$H/bin/ls"; chmod 755 "$H/bin/ls"
p=base
+# ⚠ Sin el binario del verbo no hay nada que medir: el bloque pregunta las rutas declaradas con
+# `takana setuid --json`. Se SALTA diciéndolo (exit 2), que no es lo mismo que pasar.
+[ -x ./target/release/takana ] || {
+ echo " ⊘ SALTADO: falta ./target/release/takana — el bloque no puede preguntar las declaraciones"
+ exit 2
+}
# ── el bloque REAL, extraído del script que va a correr ────────────────────────────────────────
sed -n '/^ _recetas_p=""/,/^ \[ "\$_liberados" -gt 0 \]/p' scripts/instalador-variantes.sh > "$W/bloque.sh"
[ -s "$W/bloque.sh" ] || { echo "✗ no pude extraer el bloque del armador"; exit 1; }
echo " (bloque extraído: $(wc -l < "$W/bloque.sh") líneas)"
+# `set +e` alrededor del bloque: su última línea es un `[ ... ] && echo`, que devuelve 1 cuando no
+# libera nada, y con `set -e` eso mataba el test antes de comprobar una sola cosa. Un test que muere
+# en silencio pasa por verde.
+set +e
. "$W/bloque.sh"
+set -e
# ── y la copia que viene después, igual que en el armador ──────────────────────────────────────
( cd "$H" && find . -type d -exec mkdir -p "$C/{}" \; ) 2>/dev/null || true
( cd "$H" && find . ! -type d -exec cp -a -l -n {} "$C/{}" \; ) 2>/dev/null || true