#go #terratest
#Вперед #terratest
Вопрос:
Конфигурация
- go1.15.2 darwin /amd64
- macOS Catalina v10.15.7
.zshrc
файл
export GOPATH=$HOME/go
export GOROOT=/usr/local/opt/go/libexec
export PATH=$PATH:$GOPATH/bin
export PATH=$PATH:$GOROOT/bin
Что я пытаюсь сделать
Я новичок в Go и пытаюсь использовать Terratest для написания теста для сборки упаковщика.
При попытке запуска go test my_test.go
я продолжаю получать ошибки, в которых говорится, что мне нужно установить отсутствующие пакеты.
../../../../../ go/src/github.com/gruntwork-io/terratest/modules/aws/sqs.go:10:2: не удается найти пакет «github.com/google/uuid » в любом из:
/usr/local/opt/go/libexec/src/github.com/google/uuid (из $GOROOT) /Users/username/go/src/github.com/google/uuid (из $GOPATH).
СБОЙ командной строки-аргументы [сбой установки] СБОЙ
Поиск в Google я обнаружил, что запуск go get -u ./...
из каталога, в котором находится мой тестовый файл, должен устанавливать эти пакеты
Проблема
При запуске go get -u ./...
я получаю следующую ошибку:
пакет _/Users/username/github.com/my-org/my-repo/packer/tests: нераспознанный путь импорта «_/Users/username/github.com/my-org/my-repo/packer/tests»: путь импорта не начинается с имени хоста
Для дополнительного контекста это структура каталогов, которую я использую:
~
github.com/my-org/my-repo/
packer/
tests/
my_test.go
И вот тестовый файл, который я создал, используя этот пример terratest в качестве ссылки:
package test
import (
"testing"
"github.com/gruntwork-io/terratest/modules/packer"
"github.com/stretchr/testify/assert"
terratest_aws "github.com/gruntwork-io/terratest/modules/aws"
)
func TestMyAmiBuild( t *testing.T) {
awsRegion := "us-east-1"
packerOptions := amp;packer.Options{
// Path to the Packer template under test
Template: "../template/template.json",
// Variables to pass to Packer build
Vars: map[string]string{
"ami_name": "my-ami"
},
// Only build the AWS AMI
Only: "amazon-ebs",
}
// Build the Packer template
amiID := packer.BuildArtifact(t, packerOptions)
// Clean up the AMI after we're done
defer terratest_aws.DeleteAmiAndAllSnapshots(t, awsRegion, amiID)
// Check if AMI is private
amiIsPublic := terratest_aws.GetAmiPubliclyAccessible(t, awsRegion, amiID)
assert.False(t, amiIsPublic)
}
Комментарии:
1. Здравствуйте, вы выбрали хорошие инструменты, вы почти на месте 🙂 Основная проблема заключается в том, что вы используете старый способ Go, перед модулями. 1. Не экспортируйте все переменные среды, они просто добавляют путаницу и ошибки; 2. больше не нужно помещать ваш код в GOPATH, поместите его туда, куда вы хотите; 3 прочитайте и используйте go mod init. Для ввода модуля go см. «Быстрый запуск» github.com/golang/go/wiki/Modules