我正在尝试运行一个预先提交的挂钩,如果我的单元测试没有运行,就会阻止我提交。现在我有一个运行测试的shell脚本,我的终端告诉我他们已经失败了,这很好。但是,当我的终端检测到我的测试失败时,我不确定在我的Shell脚本中放置什么来实际停止我的提交。 像这样:
我倾向于认为我所缺少的是一个简单的if语句,它检查测试是否失败然后停止提交,如果测试通过则完成提交。但我可能完全错了,这是我第一次使用shell脚本,所以我不确定如何去做。感谢。
答案 0 :(得分:2)
当测试失败时,您需要确保脚本以非零退出代码退出。
来自Git文档:
从此脚本退出非零状态会导致git commit命令在创建提交之前中止。
https://git-scm.com/docs/githooks
基本上,如果测试失败,请exit 1
,否则exit 0
。exit 0
。现在,你可能正在做<run unit tests>
EXIT_CODE=$?
...
exit EXIT_CODE
(或者只是让脚本结束)。
最有可能的是,您的单元测试已经返回了一个有效的退出代码,您可以使用它来确定脚本的退出代码。
执行此操作的简单方法如下:
string text = "...
<table>
<tr>
<td>
<a href="javascript:parent.ShowSheet('abc test 1.xls')">abc</a>
</td>
<td>
<a href="javascript:parent.ShowSheet('xyz test 2.xls')">XYZ</a>
</td>
</tr>
</table>...";
答案 1 :(得分:0)
.git / hooks / pre-commit 中的这个简单的shell脚本对我有用。
#!/bin/sh
npm run test || exit 1
如果npm运行测试失败,它将通过控制退出以失败,并带有肯定的错误代码以终止程序。如果通过,则永远不会执行exit语句。