预先提交钩子单元测试

时间:2017-10-10 14:36:38

标签: git bash shell terminal githooks

我正在尝试运行一个预先提交的挂钩,如果我的单元测试没有运行,就会阻止我提交。现在我有一个运行测试的shell脚本,我的终端告诉我他们已经失败了,这很好。但是,当我的终端检测到我的测试失败时,我不确定在我的Shell脚本中放置什么来实际停止我的提交。 像这样: enter image description here

我倾向于认为我所缺少的是一个简单的if语句,它检查测试是否失败然后停止提交,如果测试通过则完成提交。但我可能完全错了,这是我第一次使用shell脚本,所以我不确定如何去做。感谢。

2 个答案:

答案 0 :(得分:2)

当测试失败时,您需要确保脚本以非零退出代码退出。

来自Git文档:

  

从此脚本退出非零状态会导致git commit命令在创建提交之前中止。

https://git-scm.com/docs/githooks

基本上,如果测试失败,请exit 1,否则exit 0exit 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语句。