El banco POSIX de 57 casos lo pasa brush 56/57 y aun así no construye una receta autotools: mide lo que a uno se le ocurrió preguntar. Este pregunta si el candidato hace LO MISMO que el control sobre el material que hay. - compara (rc, stdout, árbol de ficheros producido); stderr es aviso, no divergencia — el texto de error diverge legítimamente - el árbol es la columna que faltaba: el caso 10 diverge SÓLO ahí, que es la clase de bug del libtool mal escapado (rc=0, stdout idéntico) - toda divergencia se confirma re-corriendo control y candidato: separa caso no determinista de shell inestable de divergencia real - fuentes: fixtures de regresión, generador de tortura de comillas, las 1130 fases del corpus y configure/libtool reales en sh -n Medido, 1273 casos en 5,5 s: brush 35 duras, bash 8, y CERO en los 1156 casos de parseo. El generador saca el #1394 entero sin conocerlo. Hallazgo nuevo: brush no ejecuta nunca el trap EXIT de un subshell — y eso golpea el frente del PRODUCTO, donde el veredicto del paso 3 decía que no había evidencia en contra.
14 lines
438 B
Bash
14 lines
438 B
Bash
# Orden de expansiones: sustitución → división en campos por IFS → expansión de rutas → quita de
|
|
# comillas. Un shell que las ordene mal rompe cualquier `for f in $LISTA`.
|
|
: > a.txt; : > b.txt
|
|
IFS=,
|
|
set -- $(echo "uno,dos,tres")
|
|
echo "campos=$# todos=[$*]"
|
|
IFS=' '
|
|
for f in *.txt; do echo "glob=$f"; done
|
|
for f in noexiste*; do echo "sin-match=$f"; done
|
|
x="a b"
|
|
echo "comillado=[$x] desnudo=[$x]"
|
|
set -- $x
|
|
echo "partido=$#"
|