Ich schreibe gerade ein Bash-Test-Framework, in dem in einer Testfunktion sowohl Standard-Bash-Tests ( [[
) als auch vordefinierte Matcher verwendet werden können. Matcher sind Wrapper für '[[' und setzen neben der Rückgabe eines Rückkehrcodes eine aussagekräftige Nachricht, die besagt, was erwartet wurde.
Beispiel:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Wenn also ein Matcher verwendet wird und dieser fehlschlägt, wird nur dann eine error_message gesetzt.
Jetzt, irgendwann später, teste ich, ob die Tests erfolgreich waren. Wenn es erfolgreich war, drucke ich die Erwartung in grün, wenn es fehlgeschlagen ist, in rot.
Darüber hinaus ist möglicherweise eine error_message festgelegt, sodass ich teste, ob eine Nachricht vorhanden ist, sie drucke und dann deaktiviere (da der folgende Test möglicherweise keine festlegt error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Nun ist meine Frage, ob es besser ist, die Variable zu deaktivieren oder sie einfach auf '' zu setzen, wie
error_message=''
Welches ist besser? Macht es tatsächlich einen Unterschied? Oder sollte ich ein zusätzliches Flag haben, das angibt, dass die Nachricht gesetzt wurde?
error_message
mit etwas anderem vergleichen , würde ich sagen, dass es keine Rolle spielt. Ich denke jedoch, dass Sie möchten[[ $error_message ]]
, andernfalls testen Sie, ob die Literalzeichenfolge "error_message" vorhanden ist.