`cmd/go`:为`go test`添加一个选项,以测试当前模块中的所有包,

pbwdgjma  于 6个月前  发布在  Go
关注(0)|答案(7)|浏览(125)

你正在使用的Go版本是什么( go version )?

$ go version
go version go1.16.5 windows/amd64

这个问题在最新版本中是否重现?

是的

你正在使用什么操作系统和处理器架构( go env )?

go env 输出

$ go env
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Patrick\AppData\Local\go-build
set GOENV=C:\Users\Patrick\AppData\Roaming\go\env  
set GOEXE=.exe
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\Patrick\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\Patrick\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.16.5
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\Users\Patrick\dev\internal\go-testing\go.mod
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\Patrick\AppData\Local\Temp\go-build1425292384=/tmp/go-build -gno-record-gcc-switches

你做了什么?

我想测试我的go模块内的所有包。
在网上搜索后,我在Stackoverflow上找到了 go test ./...
尽管这在 go help test 中有记录,但它有点隐藏,看起来有点奇怪。
因此我建议添加一个标志 -all ,例如 go test -all 作为 go test ./... 的一个更好的替代方案。

你期望看到什么?

你实际上看到了什么?

clj7thdc

clj7thdc1#

尽管这在 go help test 中有记录,但它有点隐藏,看起来有点奇怪。
你有什么建议可以使这个更容易找到或使用吗?
我认为在我们添加更多实现相同功能的方法之前,我们应该尝试改进文档。拥有更多方法意味着更多的代码和文档,以及更多的边缘情况;go test -all . 应该做什么?go test -all ./... 又应该如何?标志是否适用于其他命令?

sh7euo9m

sh7euo9m2#

我考虑了 go test -all 而不是 go test -all .
只需一个简单的命令来运行模块中的所有测试。当前的解决方案似乎有点奇怪。
我喜欢 Go,但在某些方面它可以更简单。例如在 Rust 中,你只需运行 cargo test 就可以运行所有测试。
我建议将其作为避免破坏性更改的替代方案。

ff29svar

ff29svar3#

我同意./...是一个有点尴尬的模式,但这里真正的概念是一个包模式,而不是一个标志。(比较#40364。)

6yjfywim

6yjfywim4#

就其价值而言,你确实有 go test all ,但请注意,这真的意味着 一切 ,包括来自你的依赖项的所有软件包。我认为 go test -allgo test all 做非常不同的事情会很奇怪。
我想我们可以添加 go test module ,尽管那似乎并不比 go test ./... 更易于输入。

enxuqcxy

enxuqcxy5#

我一直在考虑使用 go test mod 作为简写,因为(a)不应该有名为 mod 的包,(b)现有的简写模式,如 stdcmd ,主要是三个字母的缩写。
让我觉得 ./... 不太方便的主要原因是它相对于当前子目录而不是模块根目录。

6ljaweal

6ljaweal6#

值得注意的是,这意味着你需要测试所有内容,包括你的依赖项中的所有包。
谢谢你指出这一点。我不知道这个。
考虑到这一点,-all可能会引起混淆,这是正确的。
我喜欢建议的go test mod或者作为标志的go test -mod,这样就不会与名为mod的包发生冲突。

laximzn5

laximzn57#

这里有一个添加 mod 包模式的原因;gopls 目前在处理整个模块的包模式时存在困难:golang/tools@bfc1674
他们正在进行 ${scope}/... ,但这对于例如 std/... 来说是行不通的。

相关问题