【发布时间】:2019-05-03 04:07:40
【问题描述】:
我的流程有问题,我设置了一个 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
使用此设置,如果其中一个单元测试(被推送)失败,我想拒绝推送。
问题在于它运行的是已经签出到工作目录$WORKING_DIR 的测试,而不是当前ref 中推送的测试。
我想在运行 npm 测试之前总是检查 tests 文件夹,但我不确定这是否是在推送之前自动运行单元测试的正确方法。
【问题讨论】:
标签: git unit-testing githooks