如何安装 Azure terratest 模块
How to install Azure terratest module
我在安装 azure 模块时遇到以下错误。
代码:
package test
import (
"testing"
"github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb"
"github.com/gruntwork-io/terratest/modules/azure"
"github.com/stretchr/testify/assert"
)
func TestTerraformAzureCosmosDBExample(t *testing.T) {
foo
boo
}
执行:
C:\foo\boo>go test -v
# foo_test
foo_test.go:6:2: no required module provides package github.com/gruntwork-io/terratest/modules/azure; to add it:
go get github.com/gruntwork-io/terratest/modules/azure
FAIL foo_test [setup failed]
错误:
C:\foo\boo>go get github.com/gruntwork-io/terratest/modules/azure
# github.com/gruntwork-io/terratest/modules/azure
C:\foo\go\pkg\mod\github.com\gruntwork-io\terratest@v0.36.5\modules\azure\keyvault.go:139:50: too many arguments in call to "github.com/Azure/azure-sdk-for-go/services/keyvault/auth".NewAuthorizerFromFile
have (string)
want ()
C:\foo\go\pkg\mod\github.com\gruntwork-io\terratest@v0.36.5\modules\azure\resourcegroup.go:78:9: cannot use &rg (type *"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-10-01/resources".Group) as type *"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-06-01/resources".Group in return argument
C:\foo\go\pkg\mod\github.com\gruntwork-io\terratest@v0.36.5\modules\azure\resourcegroup.go:100:18: cannot use rg.Values() (type []"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-10-01/resources".Group) as type []"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-06-01/resources".Group in return argument
有人可以帮助我了解需要进行哪些更改才能消除此错误吗?
从 this initial state 开始:
-- main.go --
package main
import (
_ "github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb"
_ "github.com/gruntwork-io/terratest/modules/azure"
_ "github.com/stretchr/testify/assert"
)
func main() {}
-- go.mod --
module example.com/m
go 1.17
首先,运行 go mod tidy
填写一组完整的(但可能不兼容)依赖项。
$ go mod tidy
go: finding module for package github.com/stretchr/testify/assert
go: finding module for package github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb
go: finding module for package github.com/gruntwork-io/terratest/modules/azure
go: found github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb in github.com/Azure/azure-sdk-for-go v55.6.0+incompatible
go: found github.com/gruntwork-io/terratest/modules/azure in github.com/gruntwork-io/terratest v0.36.5
go: found github.com/stretchr/testify/assert in github.com/stretchr/testify v1.7.0
go: finding module for package github.com/gofrs/uuid
go: found github.com/gofrs/uuid in github.com/gofrs/uuid v4.0.0+incompatible
现在尝试 go build
。
$ go build .
# github.com/Azure/azure-sdk-for-go/services/mysql/mgmt/2020-01-01/mysql
.gopath/pkg/mod/github.com/!azure/azure-sdk-for-go@v55.6.0+incompatible/services/mysql/mgmt/2020-01-01/mysql/models.go:346:2: undefined: azure.FutureAPI
…
它会产生很多错误,这并非完全出乎意料:azure-sdk-for-go
在主要版本 55(!) 上,对我来说这表明中断更改率很高。所以这个版本的 terratest
可能是针对旧版本编写的,并且已被一些干预更改破坏。
要弄清楚 terratest
是针对哪个版本编写的,我可以检查 its go.mod
file。在 terratest
v0.36.5
,它指定
github.com/Azure/azure-sdk-for-go v46.0.0+incompatible
让我们试试那个版本:
$ go get -d github.com/Azure/azure-sdk-for-go@v46.0.0+incompatible
go: downloading github.com/Azure/azure-sdk-for-go v46.0.0+incompatible
go get: downgraded github.com/Azure/azure-sdk-for-go v55.6.0+incompatible => v46.0.0+incompatible
现在再次go build
:
$ go build .
.gopath/pkg/mod/github.com/!azure/azure-sdk-for-go@v46.0.0+incompatible/services/mysql/mgmt/2020-01-01/mysql/models.go:28:2: missing go.sum entry for module providing package github.com/satori/go.uuid (imported by github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault); to add:
go get github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault@v46.0.0+incompatible
这是因为我告诉go get
下载一个模块的特定版本,但我实际上需要一组包[=55] =] 来自该模块 - 我缺少这些包的某些依赖项的校验和。所以我会 运行 go mod tidy
再次修复包图:
$ go mod tidy
go: downloading github.com/satori/go.uuid v1.2.0
这就是诀窍:
$ go build .
$
我在安装 azure 模块时遇到以下错误。
代码:
package test
import (
"testing"
"github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb"
"github.com/gruntwork-io/terratest/modules/azure"
"github.com/stretchr/testify/assert"
)
func TestTerraformAzureCosmosDBExample(t *testing.T) {
foo
boo
}
执行:
C:\foo\boo>go test -v
# foo_test
foo_test.go:6:2: no required module provides package github.com/gruntwork-io/terratest/modules/azure; to add it:
go get github.com/gruntwork-io/terratest/modules/azure
FAIL foo_test [setup failed]
错误:
C:\foo\boo>go get github.com/gruntwork-io/terratest/modules/azure
# github.com/gruntwork-io/terratest/modules/azure
C:\foo\go\pkg\mod\github.com\gruntwork-io\terratest@v0.36.5\modules\azure\keyvault.go:139:50: too many arguments in call to "github.com/Azure/azure-sdk-for-go/services/keyvault/auth".NewAuthorizerFromFile
have (string)
want ()
C:\foo\go\pkg\mod\github.com\gruntwork-io\terratest@v0.36.5\modules\azure\resourcegroup.go:78:9: cannot use &rg (type *"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-10-01/resources".Group) as type *"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-06-01/resources".Group in return argument
C:\foo\go\pkg\mod\github.com\gruntwork-io\terratest@v0.36.5\modules\azure\resourcegroup.go:100:18: cannot use rg.Values() (type []"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-10-01/resources".Group) as type []"github.com/Azure/azure-sdk-for-go/services/resources/mgmt/2020-06-01/resources".Group in return argument
有人可以帮助我了解需要进行哪些更改才能消除此错误吗?
从 this initial state 开始:
-- main.go --
package main
import (
_ "github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb"
_ "github.com/gruntwork-io/terratest/modules/azure"
_ "github.com/stretchr/testify/assert"
)
func main() {}
-- go.mod --
module example.com/m
go 1.17
首先,运行 go mod tidy
填写一组完整的(但可能不兼容)依赖项。
$ go mod tidy
go: finding module for package github.com/stretchr/testify/assert
go: finding module for package github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb
go: finding module for package github.com/gruntwork-io/terratest/modules/azure
go: found github.com/Azure/azure-sdk-for-go/profiles/latest/cosmos-db/mgmt/documentdb in github.com/Azure/azure-sdk-for-go v55.6.0+incompatible
go: found github.com/gruntwork-io/terratest/modules/azure in github.com/gruntwork-io/terratest v0.36.5
go: found github.com/stretchr/testify/assert in github.com/stretchr/testify v1.7.0
go: finding module for package github.com/gofrs/uuid
go: found github.com/gofrs/uuid in github.com/gofrs/uuid v4.0.0+incompatible
现在尝试 go build
。
$ go build .
# github.com/Azure/azure-sdk-for-go/services/mysql/mgmt/2020-01-01/mysql
.gopath/pkg/mod/github.com/!azure/azure-sdk-for-go@v55.6.0+incompatible/services/mysql/mgmt/2020-01-01/mysql/models.go:346:2: undefined: azure.FutureAPI
…
它会产生很多错误,这并非完全出乎意料:azure-sdk-for-go
在主要版本 55(!) 上,对我来说这表明中断更改率很高。所以这个版本的 terratest
可能是针对旧版本编写的,并且已被一些干预更改破坏。
要弄清楚 terratest
是针对哪个版本编写的,我可以检查 its go.mod
file。在 terratest
v0.36.5
,它指定
github.com/Azure/azure-sdk-for-go v46.0.0+incompatible
让我们试试那个版本:
$ go get -d github.com/Azure/azure-sdk-for-go@v46.0.0+incompatible
go: downloading github.com/Azure/azure-sdk-for-go v46.0.0+incompatible
go get: downgraded github.com/Azure/azure-sdk-for-go v55.6.0+incompatible => v46.0.0+incompatible
现在再次go build
:
$ go build .
.gopath/pkg/mod/github.com/!azure/azure-sdk-for-go@v46.0.0+incompatible/services/mysql/mgmt/2020-01-01/mysql/models.go:28:2: missing go.sum entry for module providing package github.com/satori/go.uuid (imported by github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault); to add:
go get github.com/Azure/azure-sdk-for-go/services/keyvault/mgmt/2016-10-01/keyvault@v46.0.0+incompatible
这是因为我告诉go get
下载一个模块的特定版本,但我实际上需要一组包[=55] =] 来自该模块 - 我缺少这些包的某些依赖项的校验和。所以我会 运行 go mod tidy
再次修复包图:
$ go mod tidy
go: downloading github.com/satori/go.uuid v1.2.0
这就是诀窍:
$ go build .
$