英文:
Build constraints exclude all Go files (macOS with Go 1.18.3)
问题
我是新手,对Go和terratest不太了解。我有以下的terratest代码:
package main
import (
"regexp"
"testing"
"github.com/gruntwork-io/terratest/modules/terraform"
"github.com/stretchr/testify/assert"
)
func TestS3Creation(t *testing.T) {
t.Parallel()
terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
TerraformDir: "./unit-test",
})
defer terraform.Destroy(t, terraformOptions)
terraform.InitAndApply(t, terraformOptions)
bastionSecurityGroup := terraform.Output(t, terraformOptions, "bastion_security_group")
assert.Regexp(t, regexp.MustCompile(`^sg-*`), bastionSecurityGroup)
}
我按照以下方式进行初始化:
go mod init github.com/myorg/terraform-bastion-linux
当我尝试使用go test -v
运行它时,我收到以下错误:
package github.com/myorg/terraform-bastion-linux: build constraints exclude all Go files in /Users/george/terraform-bastion-linux/test
我的环境如下:
macOS Big Sur 11.6.4
CPU: Intel i9
terraform --version
Terraform v1.2.3
on darwin_amd64
go version
go version go1.18.3 darwin/amd64
我没有设置以GO
开头的环境变量,例如,env|grep GO
没有返回任何结果。
根据以下建议:
- https://stackoverflow.com/questions/55348458/build-constraints-exclude-all-go-files-in
- https://stackoverflow.com/questions/61901809/build-constraints-exclude-all-go-files
我尝试在文件顶部添加以下内容:
//+build darwin,cgo linux
//go:build (darwin && cgo) || linux
并且导出了GOOS和GOARCH环境变量:
export GOOS=darwin
export GOARCH=amd64
但是我仍然收到相同的错误。
如何解决这个问题?
为了成功运行测试,我可以尝试什么?
英文:
I am new to Go and terratest. I have the following terratest
package main
import (
"regexp"
"testing"
"github.com/gruntwork-io/terratest/modules/terraform"
"github.com/stretchr/testify/assert"
)
func TestS3Creation(t *testing.T) {
t.Parallel()
terraformOptions := terraform.WithDefaultRetryableErrors(t, &terraform.Options{
TerraformDir: "./unit-test",
})
defer terraform.Destroy(t, terraformOptions)
terraform.InitAndApply(t, terraformOptions)
bastionSecurityGroup := terraform.Output(t, terraformOptions, "bastion_security_group")
assert.Regexp(t, regexp.MustCompile(`^sg-*`), bastionSecurityGroup)
}
I initialised it as follows:
go mod init github.com/myorg/terraform-bastion-linux
When trying to run it with go test -v
I get the error:
package github.com/myorg/terraform-bastion-linux: build constraints exclude all Go files in /Users/george/terraform-bastion-linux/test
My environment is as follows:
macOS Big Sur 11.6.4
CPU: Intel i9
terraform --version
Terraform v1.2.3
on darwin_amd64
go version
go version go1.18.3 darwin/amd64
I have no env variables set that start with GO
, for example, env|grep GO
returns nothing as result.
As advised in:
- https://stackoverflow.com/questions/55348458/build-constraints-exclude-all-go-files-in
- https://stackoverflow.com/questions/61901809/build-constraints-exclude-all-go-files
I have tried adding the following on top of the file
//+build darwin,cgo linux
//go:build (darwin && cgo) || linux
And also exporting the GOOS and GOARCH env variables
export GOOS=darwin
export GOARCH=amd64
But I still get the same error.
How to troubleshoot this issue?
What can I try in order to run the test successfully?
答案1
得分: 0
根据JimB的评论,问题在于文件名中包含了"linux"这个词,Go语言将其解释为一个构建约束,只能在Linux上运行,而不能在Darwin上运行。我对Go语言还不熟悉,这种错误看起来非常误导人。我甚至在我的原始问题中没有提到文件名,因为我认为它是无关紧要的。
英文:
As commented by JimB, the problem was that the filename included the word linux, which Go interpreted as a build constraint to only run on Linux and not Darwin. I am new to Go, and it appears to be terribly misleading with such errors. I didn't even include the file name in my original question as I thought it would be irrelevant.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论