$ GOPATH / src / ...和vendor / ...版本不同

时间:2017-08-23 14:36:27

标签: go versioning vendor

我的项目,使用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目录并重建它。

1 个答案:

答案 0 :(得分:0)

通过将版本固定到v1.1.4,您明确告诉dep使用不包含所需功能的版本(检查GitHub上的testify包的历史记录 - v1.1.4来自去年9月,今年6月增加了PanicsWithValue。如果您取消固定版本(version = "*"),则应使用包含PanicsWithValue的master @ HEAD。