Не так давно судьба заставила перебраться на линукс, выбор коего пал на Kubuntu по соображениям лени. А так же потребовалось поднять CI систему на этом самом линуксе. Решено использовать с этой целью бbash. Пусть я и забиваю гвозди микроскопом, но зато много чего нового в этом деле можно выучить.
Итак задача:
Собирается много юнит тестов. Каждый набор тестов -- это исполняемый файл, каждый файл лежит в своем каталоге.
Надо: написать скрипт для bash, который прогонит все тесты и подведет итог о результатах.
Собственно решение подвернулось следующее:
1) ищем все исполняемые файлы
2) все их выполняем и складываем возвращаемые значения (получим количество проваленных тестов. Не обязательно, но мне захотелось)
3) выводим результат. Если ненулевой, то пора паниковать, иначе -- все хорошо.
Пока получилось вот что:
echo '************************'
echo '** executables to run **'
echo '************************'
echo
for x in $files;
do
echo $x
done
echo
echo '*********************'
echo '** start execution **'
echo '*********************'
echo
result=$((0))
for x in $files;
do
$x
result=$(($result+$?))
echo
done
if [ "$result" != "0" ]
then
echo **********
echo ** FAIL **
echo **********
else
echo
echo '*************************'
echo '******** PASSED *********'
echo '*************************'
echo
fi
exit $result
итак по пунктам:
параметры find:
./tests/ -- искать в папке ./tests/
-executable -- исполняемый файл
-type f -- указываем, что искать надо файлы
for x in $files;
do
$x
result=$(($result+$?))
echo
done
В цикле выполняем все найденные файлы.
Увеличиваем счетчик на значение возвращенное последним исполняемым файлом. Вот это самое '$?'.
then
...failed
else
...succeeded
fi
exit $result
Вот примерно так. Надеюсь кому-нибудь поможет. Читать дальше......