猿问

在 GVM 中使用 Go 1.2 覆盖工具

我正在使用 GVM 来管理我的 go 安装和路径,一切似乎都很好 - 我可以运行测试并生成构建。我现在正在尝试生成代码覆盖率文件,但遇到了一些困难。


我的包定义在/home/bill/dev/server/model.


当我运行时:


$ go test -cover -coverprofile cover.out

测试成功运行并生成覆盖文件。但是,coverage 文件中的路径如下所示:



_/home/bill/dev/server/model/activity.go:19.34,21.2 1 1


当我尝试创建 html 封面文件时,出现以下错误:


$ go tool cover -html=cover.out


cover: can't find "activity.go": cannot find package "_/home/bill/dev/server/model/" in any of:

    /home/bill/.gvm/gos/go1.2/src/pkg/_/home/bill/dev/server/model (from $GOROOT)

    /home/bill/.gvm/pkgsets/go1.2/global/src/_/home/bill/dev/server/model (from $GOPATH)

我该如何解决?


额外细节


~ gvm use go1.2

Now using version go1.2


~ echo $GOPATH

/home/bill/.gvm/pkgsets/go1.2/global


~ echo $GOROOT

/home/bill/.gvm/gos/go1.2

我尝试手动设置我的 $GOPATH 但这并没有改变 cover.out 文件。我也尝试手动编辑 cover.out 文件,但我无法弄清楚它实际想要的路径。在上面显示的默认配置中,运行go test按预期运行。


尝试修复 GOPATH


~ export GOPATH=/home/bill/dev/

~ ln -s /home/bill/dev/server /home/bill/.gvm/gos/go1.2/src


~ go test

cannot find package "code.google.com/p/go.crypto/pbkdf2" in any of:

/home/bill/.gvm/gos/go1.2/src/pkg/code.google.com/p/go.crypto/pbkdf2 (from $GOROOT)

/home/bill/dev/src/code.google.com/p/go.crypto/pbkdf2 (from $GOPATH)

../util/log.go:4:2: cannot find package "github.com/kr/pretty" in any of:

/home/bill/.gvm/gos/go1.2/src/pkg/github.com/kr/pretty (from $GOROOT)

/home/bill/dev/src/github.com/kr/pretty (from $GOPATH)

这些是我之前使用go get. 它们最终位于 $GOPATH 曾经指向的 /home/bill/.gvm/pkgsets/go1.2/global/src 中。所以我改变了 GOPATH


~ export GOPATH=/home/bill/dev/:/home/bill/.gvm/pkgsets/go1.2/global

以便测试再次运行,但 cover.out 文件中仍然包含相同的目录,并且仍然给我相同的错误。


森栏
浏览 186回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答