В даний час я пишу рамку тестування bash, де в тестовій функції можуть використовуватися як стандартні баш-тести ( [[
), так і попередньо визначені відповідники. Матчі є обгортками до '[[', і крім повернення коду повернення, встановіть якесь змістовне повідомлення, в якому йдеться про те, що очікувалося.
Приклад:
string_equals() {
if [[ ! $1 = $2 ]]; then
error_message="Expected '$1' to be '$2'."
return 1
fi
}
Отже, коли використовується Matcher, і він виходить з ладу, лише тоді встановлюється повідомлення про помилку.
Тепер, у якийсь момент пізніше, я перевіряю, чи вдалися тести. Якщо це вдалося, я роздруковую очікування зеленим кольором, якщо воно не вдалося червоним кольором.
Крім того, може бути набір повідомлень про помилку, тому я перевіряю, чи існує повідомлення, надрукуйте його та скасуйте його (оскільки наступний тест може не встановити error_message
):
if [[ $error_message ]]; then
printf '%s\n' "$error_message"
unset -v error_message
fi
Тепер моє запитання полягає в тому, якщо краще змінити змінну або просто встановити її на "", як
error_message=''
Який з них кращий? Чи насправді це має значення? Чи, можливо, у мене повинен бути додатковий прапор із зазначенням, що повідомлення було встановлено?
error_message
ні з чим іншим, я б сказав, що це не має значення. Однак я думаю, що ти хочеш[[ $error_message ]]
, інакше ти перевіряєш, що існує буквальний рядок "error_message".