gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1346Shell 97Rust 63Markdown 571650 Definiciones

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>

ff40c91ba9569a11e09c6df42ff72a5a161a38e1 · por sergio · (hace 7 d) · padre c51c2bf32 · ver el árbol en este commit

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