zhuo/blog

Go如何测试标准库

部分的Go的标准库由于使用了internal这个包,所以,没有办法进行测试。 而之前在写adler32时,我用了个投机的方法,先测试完,再进行移植,其实不算完整的冒烟,毕竟可能会有什么移植的代码搞错了。 每次都跑./all.bash太费时间。所以到底怎么单独测试标准库呢?

直到我发现了Go: Testing Standard Library Changes

# Path that the Go repo was cloned to.
$ GODEV=$HOME/godev

# Move into the src directory.
$ cd $GODEV/src


# Set the bootstrap Go install to the current installation.
$ GOROOT_BOOTSTRAP=$(go env GOROOT) ./make.bash
[output omitted]


# Use the newly built toolchain to run the test.
$ $GODEV/bin/go test -v go/types
[output truncated]

=== RUN   ExampleInfo
--- PASS: ExampleInfo (0.00s)
PASS
ok   go/types 7.129s

其实就是Go怎么判断自己能不能用internal的标准就是前缀路径是不是一致的(太暴力了)。 这样编译的话,你开发的环境路径就和Go工具链的路径一致了~