英文:
$GOPATH/src/... and vendor/... versions are different
问题
我的项目使用Go 1.8,并且依赖于github.com/stretchr/testify
。我使用go get -u github.com/stretchr/testify
命令获取了最新版本,并且在$GOPATH/src
目录下的版本看起来是正确的。
我在Gopkg.toml
文件中添加了最新版本号的约束:
[[constraint]]
name = "github.com/stretchr/testify"
version = "1.1.4"
然后我运行了dep ensure -update
命令,然后运行了dep status
命令来更新vendor
目录(dep status
的输出结果):
github.com/stretchr/testify ^1.1.4 v1.1.4 69483b4 69483b4 1
在$GOPATH/src
目录下的版本中,文件github.com/stretchr/testify/assert/assertions.go
中包含了函数PanicsWithValue
:
func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
但是在vendor
目录下的版本中,这个函数缺失了:
func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
我做错了什么?我想在我的测试中使用PanicsWithValue
函数。我甚至尝试删除整个vendor
目录并重新构建,但问题仍然存在。
英文:
My project, using Go 1.8, has a dependency on github.com/stretchr/testify
. I retrieved the latest using go get -u github.com/stretchr/testify
and the version in $GOPATH/src
appears to be correct.
I added the latest version number as a contraint in Gopkg.toml
:
[[constraint]]
name = "github.com/stretchr/testify"
version = "1.1.4"
I then ran dep ensure -update
and then dep status
to update the vendor
directory (output of dep status
):
github.com/stretchr/testify ^1.1.4 v1.1.4 69483b4 69483b4 1
The version in $GOPATH/src
contains, in the file github.com/stretchr/testify/assert/assertions.go
, the function PanicsWithValue
:
func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
func PanicsWithValue(t TestingT, expected interface{}, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
but in the version in vendor
, that function is missing:
func Panics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
func NotPanics(t TestingT, f PanicTestFunc, msgAndArgs ...interface{}) bool {
// ...
}
What am I doing wrong? I would like to use the function PanicsWithValue
in my testing. I even tried deleting the entire vendor
directory and rebuilding it.
答案1
得分: 0
通过将版本固定为v1.1.4,你明确告诉dep
使用不包含你想要的功能的版本(在GitHub上检查testify包的历史记录 - v1.1.4是去年9月的版本,PanicsWithValue
是在今年6月添加的)。如果你取消固定版本(version = "*"
),它应该使用包含PanicsWithValue
的master@HEAD版本。
英文:
By pinning the version to v1.1.4, you're specifically telling dep
to use a version that does not include the feature you want (check the history of the testify package on GitHub - v1.1.4 is from last September, PanicsWithValue
was added this past June). If you unpin the version (version = "*"
) it should use master@HEAD which includes PanicsWithValue
.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论