【问题标题】:Finding test dependencies of a Go program查找 Go 程序的测试依赖项
【发布时间】:2018-05-30 21:01:00
【问题描述】:

我目前正在使用vendor/ 目录在本地供应我的依赖项。

go list -f '{{join .Deps "\n"}}' ./...  |grep -Eo 'vendor/.*'

这显示了我构建中使用的所有“构建依赖项”(从vendor/ 使用)。此功能记录在这里:https://golang.org/cmd/go/#hdr-List_packages

但它不包括您的“测试依赖项”!

所以要找到我的“测试依赖项”,我运行这个命令:

$ go list -f '{{join .TestImports "\n"}}' ./...  |grep -Eo 'vendor/.*'
vendor/github.com/stretchr/testify/assert
...

它正确列出了“测试导入”,但没有列出这些测试导入的“依赖项”。

例如,上面列出的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 调用和一些模板?

【问题讨论】:

    标签: go


    【解决方案1】:

    恐怕没有办法仅使用一个“go list”来显示所有递归测试依赖项。

    您至少需要使用两个:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-21
      • 1970-01-01
      • 1970-01-01
      • 2016-05-24
      • 2015-06-11
      • 2016-02-06
      • 2014-10-20
      • 1970-01-01
      相关资源
      最近更新 更多