看看这个目录结构:
/root
/hoge
go.mod
go.sum
main.go
/test
main_test.go
/unit
sub_test.go
/fuga
go.mod
go.sum
main.go
/test
main_test.go
您可以使用以下代码运行测试,但如果失败,它将始终返回退出代码0。
find . -name go.mod -execdir go test ./... \;
如果失败,有没有办法返回非零值?
1条答案
按热度按时间lmvvr0a81#
使用以下命令:
关于
-execdir command {} +
的find
命令手册:如果任何带有“+”形式的调用返回一个非零值作为退出状态,那么find返回一个非零的退出状态。如果find遇到错误,这有时会导致立即退出,因此一些挂起的命令可能根本不会运行。
但是
go test
不需要find
命令中匹配的文件。事实上,它会像这样失败:失败的原因是
go.mod
被解释为一个包。解决方法是在
{} +
之前添加终止符--
。请参见命令行标志语法:标志解析在第一个非标志参数(“-”是非标志参数)之前或结束符“--”之后停止。