当测试失败时,您需要确保脚本以非零退出码退出。
来自Git文档:
从此脚本中以非零状态退出会导致git commit命令在创建提交之前中止。
https://git-scm.com/docs/githooks
基本上,如果测试失败,则执行exit 1
,否则执行exit 0
。现在,您可能在所有情况下都执行exit 0
(或者只是让脚本结束)。
很可能,您的单元测试已经返回了一个有效的退出代码,您可以使用它来确定脚本的退出代码。
这样做的简单方法是:
<run unit tests>
EXIT_CODE=$?
...
exit EXIT_CODE
testFail && exit 1 || exit 0
。 - phd$?
变量显示最后一个退出代码。这适用于终端和脚本。 - mkasberg#!/bin/sh
npm run test || exit 1
我的Maven项目的.pre-commit-config.yaml文件如下所示。
repos:
- repo: https://github.com/ejba/pre-commit-maven
rev: v0.3.3
hooks:
- id: maven-test
参考:https://github.com/ejba/pre-commit-maven
您还可以在这里查看完整的可用预钩子列表,我相信会有适用于您所需语言的单元测试运行钩子,而不是使用 shell 脚本来运行单元测试。
set -e
,或者在其后加上|| exit 1
。 - Alex028502