查找Go程序的测试依赖项

时间:2018-05-28 21:37:57

标签: go

我目前正在使用go list -f '{{join .Deps "\n"}}' ./... |grep -Eo 'vendor/.*' 目录来本地供应我的依赖项。

vendor/

这向我展示了所有"构建依赖关系"在我的构建中使用(从$ go list -f '{{join .TestImports "\n"}}' ./... |grep -Eo 'vendor/.*' vendor/github.com/stretchr/testify/assert ... 使用)。此功能记录在此处:https://golang.org/cmd/go/#hdr-List_packages

但它并没有包含你的测试依赖关系"!

为了找到我的"测试依赖项",我运行这个命令:

vendor/github.com/stretchr/testify/assert

它正确列出"测试导入",但它没有列出"依赖关系"那些测试进口。

例如,上面列出的vendor/github.com/pmezard/go-difflib/difflib目录实际上取决于testify/assert(和其他一些包)。这没有在上面的输出中显示!

但是如果我运行此命令,它会显示$ go list -f '{{join .Deps "\n"}}' ./vendor/github.com/stretchr/testify/assert | grep -Eo 'vendor/.*' vendor/github.com/davecgh/go-spew/spew vendor/github.com/pmezard/go-difflib/difflib ...

的依赖关系
go list -f '{{join .Deps "\n"}}'

所以看起来我需要在所有"测试导入"上调用go list。找到"所有测试依赖关系"?

有没有更有效的方法来实现这一点,理想情况下只需要一次{{1}}调用和一些模板化?

1 个答案:

答案 0 :(得分:1)

我担心没有办法只使用一个" go list"来显示所有递归测试依赖项。

您需要至少使用两个:

go list -f '{{join .Deps "\n"}}' `go list -f '{{join .TestImports " "}}' ./...`