Actualmente estoy escribiendo un marco de prueba de bash, donde en una función de prueba, [[
se pueden usar tanto las pruebas de bash estándar ( ) como los matchers predefinidos. Los comparadores son envoltorios de '[[' y, además de devolver un código de retorno, establecen un mensaje significativo que diga lo que se esperaba.
Ejemplo:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Entonces, cuando se usa un comparador y falla, solo entonces se establece un error_message.
Ahora, en algún momento después, pruebo si las pruebas tuvieron éxito. Si tuvo éxito, imprimo la expectativa en verde, si falló en rojo.
Además, puede haber un error_message configurado, así que pruebo si existe un mensaje, lo imprimo y luego lo desarmo (porque la siguiente prueba puede no establecer un error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Ahora mi pregunta es, si es mejor desarmar la variable, o simplemente establecerla en '', como
error_message=''
¿Cuál es mejor? ¿Realmente hace alguna diferencia? ¿O tal vez debería tener una bandera adicional que indique que el mensaje se estableció?
error_message
con nada más, diría que no importa. Sin embargo, creo que lo desea[[ $error_message ]]
, de lo contrario, está probando que existe la cadena literal "mensaje_error".