From 68dfc3046dab5a26fe901982882690977e6415ac Mon Sep 17 00:00:00 2001 From: Kristin Laemmert Date: Thu, 26 Sep 2019 11:30:52 -0400 Subject: [PATCH] backend/remote-state: etcdv3, oss, and manta acc tests should fail faster The acceptance tests for etcdv3, oss and manta were not validating required env variablea, chosing to assume that if one was running acceptance tests they had already configured the credentials. It was not always clear if this was a bug in the tests or the provider, so I opted to make the tests fail faster when required attributes were unset (or ""). --- backend/remote-state/etcdv3/backend_test.go | 4 ++++ backend/remote-state/manta/backend.go | 3 --- backend/remote-state/manta/backend_test.go | 8 ++++++++ backend/remote-state/oss/backend_test.go | 6 +++++- internal/initwd/from_module_test.go | 5 +++++ internal/initwd/module_install_test.go | 8 ++++++++ 6 files changed, 30 insertions(+), 4 deletions(-) diff --git a/backend/remote-state/etcdv3/backend_test.go b/backend/remote-state/etcdv3/backend_test.go index 1199dc978..b37f8e3e5 100644 --- a/backend/remote-state/etcdv3/backend_test.go +++ b/backend/remote-state/etcdv3/backend_test.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "os" + "reflect" "strings" "testing" "time" @@ -45,6 +46,9 @@ func prepareEtcdv3(t *testing.T) { t.Log("etcd server tests require setting TF_ACC or TF_ETCDV3_TEST") t.Skip() } + if reflect.DeepEqual(etcdv3Endpoints, []string{""}) { + t.Fatal("etcd server tests require setting TF_ETCDV3_ENDPOINTS") + } cleanupEtcdv3(t) } diff --git a/backend/remote-state/manta/backend.go b/backend/remote-state/manta/backend.go index a3fdfe641..9189ad890 100644 --- a/backend/remote-state/manta/backend.go +++ b/backend/remote-state/manta/backend.go @@ -131,9 +131,6 @@ func (b *Backend) configure(ctx context.Context) error { if data.Get("key_id").(string) == "" { validationError = multierror.Append(validationError, errors.New("`Key ID` must be configured for the Triton provider")) } - if data.Get("key_id").(string) == "" { - validationError = multierror.Append(validationError, errors.New("`Key ID` must be configured for the Triton provider")) - } if b.path == "" { validationError = multierror.Append(validationError, errors.New("`Path` must be configured for the Triton provider")) } diff --git a/backend/remote-state/manta/backend_test.go b/backend/remote-state/manta/backend_test.go index 7e53b928e..be9b2575d 100644 --- a/backend/remote-state/manta/backend_test.go +++ b/backend/remote-state/manta/backend_test.go @@ -18,6 +18,14 @@ func testACC(t *testing.T) { t.Log("Manta backend tests require setting TF_ACC or TF_MANTA_TEST") t.Skip() } + skip = os.Getenv("TRITON_ACCOUNT") == "" && os.Getenv("SDC_ACCOUNT") == "" + if skip { + t.Fatal("Manta backend tests require setting TRITON_ACCOUNT or SDC_ACCOUNT") + } + skip = os.Getenv("TRITON_KEY_ID") == "" && os.Getenv("SDC_KEY_ID") == "" + if skip { + t.Fatal("Manta backend tests require setting TRITON_KEY_ID or SDC_KEY_ID") + } } func TestBackend_impl(t *testing.T) { diff --git a/backend/remote-state/oss/backend_test.go b/backend/remote-state/oss/backend_test.go index 16e717eb7..c71ed2325 100644 --- a/backend/remote-state/oss/backend_test.go +++ b/backend/remote-state/oss/backend_test.go @@ -6,11 +6,12 @@ import ( "testing" "time" + "strings" + "github.com/aliyun/aliyun-oss-go-sdk/oss" "github.com/aliyun/aliyun-tablestore-go-sdk/tablestore" "github.com/hashicorp/terraform/backend" "github.com/hashicorp/terraform/configs/hcl2shim" - "strings" ) // verify that we are doing ACC tests or the OSS tests specifically @@ -20,6 +21,9 @@ func testACC(t *testing.T) { t.Log("oss backend tests require setting TF_ACC or TF_OSS_TEST") t.Skip() } + if skip { + t.Fatal("oss backend tests require setting ALICLOUD_ACCESS_KEY or ALICLOUD_ACCESS_KEY_ID") + } if os.Getenv("ALICLOUD_REGION") == "" { os.Setenv("ALICLOUD_REGION", "cn-beijing") } diff --git a/internal/initwd/from_module_test.go b/internal/initwd/from_module_test.go index b467552b5..f45e2b324 100644 --- a/internal/initwd/from_module_test.go +++ b/internal/initwd/from_module_test.go @@ -20,6 +20,11 @@ func TestDirFromModule_registry(t *testing.T) { fixtureDir := filepath.Clean("testdata/empty") tmpDir, done := tempChdir(t, fixtureDir) + + // the module installer runs filepath.EvalSymlinks() on the destination + // directory before copying files, and the resultant directory is what is + // returned by the install hooks. Without this, tests could fail on machines + // where the default temp dir was a symlink. dir, err := filepath.EvalSymlinks(tmpDir) if err != nil { t.Error(err) diff --git a/internal/initwd/module_install_test.go b/internal/initwd/module_install_test.go index 786f84400..444968169 100644 --- a/internal/initwd/module_install_test.go +++ b/internal/initwd/module_install_test.go @@ -233,6 +233,10 @@ func TestLoaderInstallModules_registry(t *testing.T) { fixtureDir := filepath.Clean("testdata/registry-modules") tmpDir, done := tempChdir(t, fixtureDir) + // the module installer runs filepath.EvalSymlinks() on the destination + // directory before copying files, and the resultant directory is what is + // returned by the install hooks. Without this, tests could fail on machines + // where the default temp dir was a symlink. dir, err := filepath.EvalSymlinks(tmpDir) if err != nil { t.Error(err) @@ -365,6 +369,10 @@ func TestLoaderInstallModules_goGetter(t *testing.T) { fixtureDir := filepath.Clean("testdata/go-getter-modules") tmpDir, done := tempChdir(t, fixtureDir) + // the module installer runs filepath.EvalSymlinks() on the destination + // directory before copying files, and the resultant directory is what is + // returned by the install hooks. Without this, tests could fail on machines + // where the default temp dir was a symlink. dir, err := filepath.EvalSymlinks(tmpDir) if err != nil { t.Error(err)