Obecnie piszę framework testowy bash, w którym w funkcji testowej [[
można używać zarówno standardowych testów bash ( ), jak i predefiniowanych dopasowań. Dopasowujące są opakowaniami dla '[[' i oprócz zwracania kodu powrotu, ustawiają sensowną wiadomość mówiącą o oczekiwaniach.
Przykład:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Tak więc, gdy zostanie użyty element dopasowujący i nie powiedzie się, tylko wtedy ustawiany jest komunikat o błędzie.
Teraz, w pewnym momencie później, sprawdzam, czy testy się powiodły. Jeśli się udało, drukuję oczekiwanie na zielono, jeśli zawiodło na czerwono.
Ponadto może być ustawiony komunikat error_message, więc sprawdzam, czy komunikat istnieje, drukuję go, a następnie kasuję (ponieważ poniższy test może nie ustawić error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Teraz moje pytanie brzmi, czy lepiej jest cofnąć ustawienie zmiennej, czy po prostu ustawić ją na „”, na przykład
error_message=''
Który jest lepszy? Czy to rzeczywiście robi różnicę? A może powinienem mieć dodatkową flagę wskazującą, że komunikat został ustawiony?
error_message
z niczym innym, powiedziałbym, że to nie ma znaczenia. Jednak myślę, że chcesz[[ $error_message ]]
, w przeciwnym razie testujesz, czy istnieje literał „komunikat_błędu”.