2019-08-26 Нельзя Использовать Механизм Ошибок Для Бизнес-Логики
Нарушено правило: Программы пишутся для пользователей и программистов, а не для компьютера, все должно быть понятно для человека.
Задача: В тесте создания vm проверить, что нужные параметры в конфиге выставлены верно.
Ошибка: Сделал проверку с помощью кода:
cloudfox vm create ... grep -q "^IP=192.168.1.1" ${VM_CONF} grep -q "^NAME=test_vm" ${VM_CONF}
Здесь неявно используется функционал set -e (Exit immediately if a pipeline returns a non-zero status), который мы используем для контроля за ошибками выполнения команд внутри скриптов (если в конфиге опции нет, то grep упадет, тест тоже).
Как надо делать: Так как проверка опций в конфиге - это основная бизнес-логика теста, мы должны описать это явно на языке bash (желательно с понятным логом):
cloudfox vm create ... if ! grep -q "^IP=192.168.1.1" ${VM_CONF}; then echo "В конфиге vm неверно указан сгенерировался IP">&2 exit 1 fi if grep -q "^NAME=test_vm" ${VM_CONF}; then echo "В конфиге vm неверно указан сгенерировался NAME">&2 exit 1 fi
~~OWNERAPPROVE~~
Прочитал правила разработки как не надо делать 2019-08-26 нельзя использовать механизм ошибок для бизнес-логики |
Обсуждение