У меня возникла проблема в потоке, я установил хук pre-receive
для запуска модульных тестов для веток master
и dev
следующим образом:
#!/bin/bash
while read oldrev newrev ref
do
if [[ ${ref} = refs/heads/master ]];
then
BRANCH=master
WORKING_DIR="/var/www/project/project_api"
elif [[ ${ref} = refs/heads/dev ]]
then
BRANCH=dev
WORKING_DIR="/var/www/project/project_api_dev"
else
echo "Ref $ref received. Will not run unit tests."
fi
done
if (test "$BRANCH" != ""); then
echo "Running Unit Tests..."
cd "$WORKING_DIR"
npm test
rc=$?
if [[ $rc != 0 ]] ; then
echo "Unit Tests FAILED"
echo "Push is REJECTED"
exit $rc
fi
echo "Unit Tests PASSED"
fi
exit 0
С помощью этой настройки я хочу отклонить push, если один из модульных тестов (нажатие) завершится неудачей.
Проблема в том, что он запускает тесты, которые уже извлечены в рабочий каталог $WORKING_DIR
, а не тесты, которые выдвигаются в текущем ref
.
Я думал о том, чтобы всегда проверять папку tests
перед запуском теста npm, но я не уверен, является ли это правильным способом автоматизации выполнения модульных тестов перед нажатием.