J'écris actuellement un cadre de test bash, dans lequel dans une fonction de test, les tests bash standard ( [[
) ainsi que les matchers prédéfinis peuvent être utilisés. Les correspondants sont des wrappers pour «[[» et en plus de renvoyer un code de retour, ils définissent un message significatif indiquant ce qui était attendu.
Exemple:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Ainsi, lorsqu'un matcher est utilisé et qu'il échoue, alors seulement un message_erreur est défini.
Maintenant, à un moment donné plus tard, je teste si les tests ont réussi. S'il réussit, j'imprime l'attente en vert, si elle a échoué en rouge.
De plus, il peut y avoir un ensemble error_message, donc je teste si un message existe, je l'imprime, puis je le désactive (car le test suivant peut ne pas définir un error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Maintenant, ma question est de savoir s'il est préférable d'annuler la variable, ou simplement de la définir sur ``, comme
error_message=''
Quel est le meilleur? Cela fait-il réellement une différence? Ou peut-être devrais-je avoir un indicateur supplémentaire indiquant que le message a été défini?
error_message
avec rien d'autre, je dirais que cela n'a pas d'importance. Cependant, je pense que vous voulez[[ $error_message ]]
, sinon vous testez que la chaîne littérale "message_erreur" existe.