繁体   English   中英

预提交钩子单元测试

[英]Pre-Commit Hook Unit Test

我正在尝试运行一个预提交钩子,如果我的单元测试没有运行,它会阻止我提交。 现在我有一个运行测试的 shell 脚本,我的终端告诉我它们失败了,这很好。 但是,一旦我的终端检测到我的测试失败,我不确定在我的 Shell 脚本中放入什么才能真正停止我的提交。 像这样: 在此处输入图片说明

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

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

来自 Git 文档:

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

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

基本上,如果测试失败,则exit 1 ,否则exit 0 现在,您可能在所有情况下都在执行exit 0 (或只是让脚本结束)。

最有可能的是,您的单元测试已经返回了一个有效的退出代码,您可以使用它来确定脚本的退出代码。

一个简单的方法是这样的:

<run unit tests>
EXIT_CODE=$?
...
exit EXIT_CODE

.git/hooks/pre-commit 中的这个简单的 shell 脚本对我有用

#!/bin/sh
npm run test || exit 1

如果 npm run 测试失败,它会通过控制退出退出,退出失败并显示正错误代码以终止程序。 如果它通过,则永远不会执行退出语句。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM