diff --git a/google/import_spanner_database_test.go b/google/import_spanner_database_test.go index e4abd9a1..0ca07edc 100644 --- a/google/import_spanner_database_test.go +++ b/google/import_spanner_database_test.go @@ -36,7 +36,7 @@ func TestAccSpannerDatabase_importProjectInstanceDatabase(t *testing.T) { resourceName := "google_spanner_database.basic" instanceName := fmt.Sprintf("span-iname-%s", acctest.RandString(10)) dbName := fmt.Sprintf("span-dbname-%s", acctest.RandString(10)) - var projectId = multiEnvSearch([]string{"GOOGLE_PROJECT", "GCLOUD_PROJECT", "CLOUDSDK_CORE_PROJECT"}) + projectId := getTestProjectFromEnv() resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, diff --git a/google/import_spanner_instance_test.go b/google/import_spanner_instance_test.go index cecb2c03..9994bf18 100644 --- a/google/import_spanner_instance_test.go +++ b/google/import_spanner_instance_test.go @@ -34,7 +34,7 @@ func TestAccSpannerInstance_importInstance(t *testing.T) { func TestAccSpannerInstance_importProjectInstance(t *testing.T) { resourceName := "google_spanner_instance.basic" instanceName := fmt.Sprintf("span-itest-%s", acctest.RandString(10)) - var projectId = multiEnvSearch([]string{"GOOGLE_PROJECT", "GCLOUD_PROJECT", "CLOUDSDK_CORE_PROJECT"}) + projectId := getTestProjectFromEnv() if projectId == "" { t.Skip("Unable to locate projectId via environment variables ... skipping ") return diff --git a/google/provider_test.go b/google/provider_test.go index e960d420..1a195ecb 100644 --- a/google/provider_test.go +++ b/google/provider_test.go @@ -14,6 +14,25 @@ import ( var testAccProviders map[string]terraform.ResourceProvider var testAccProvider *schema.Provider +var credsEnvVars = []string{ + "GOOGLE_CREDENTIALS", + "GOOGLE_CLOUD_KEYFILE_JSON", + "GCLOUD_KEYFILE_JSON", + "GOOGLE_USE_DEFAULT_CREDENTIALS", +} + +var projectEnvVars = []string{ + "GOOGLE_PROJECT", + "GCLOUD_PROJECT", + "CLOUDSDK_CORE_PROJECT", +} + +var regionEnvVars = []string{ + "GOOGLE_REGION", + "GCLOUD_REGION", + "CLOUDSDK_COMPUTE_REGION", +} + func init() { testAccProvider = Provider().(*schema.Provider) testAccProviders = map[string]terraform.ResourceProvider{ @@ -40,41 +59,16 @@ func testAccPreCheck(t *testing.T) { os.Setenv("GOOGLE_CREDENTIALS", string(creds)) } - multiEnvSearch := func(ks []string) string { - for _, k := range ks { - if v := os.Getenv(k); v != "" { - return v - } - } - return "" + if v := multiEnvSearch(credsEnvVars); v == "" { + t.Fatalf("One of %s must be set for acceptance tests", strings.Join(credsEnvVars, ", ")) } - creds := []string{ - "GOOGLE_CREDENTIALS", - "GOOGLE_CLOUD_KEYFILE_JSON", - "GCLOUD_KEYFILE_JSON", - "GOOGLE_USE_DEFAULT_CREDENTIALS", - } - if v := multiEnvSearch(creds); v == "" { - t.Fatalf("One of %s must be set for acceptance tests", strings.Join(creds, ", ")) + if v := multiEnvSearch(projectEnvVars); v == "" { + t.Fatalf("One of %s must be set for acceptance tests", strings.Join(projectEnvVars, ", ")) } - projs := []string{ - "GOOGLE_PROJECT", - "GCLOUD_PROJECT", - "CLOUDSDK_CORE_PROJECT", - } - if v := multiEnvSearch(projs); v == "" { - t.Fatalf("One of %s must be set for acceptance tests", strings.Join(projs, ", ")) - } - - regs := []string{ - "GOOGLE_REGION", - "GCLOUD_REGION", - "CLOUDSDK_COMPUTE_REGION", - } - if v := multiEnvSearch(regs); v != "us-central1" { - t.Fatalf("One of %s must be set to us-central1 for acceptance tests", strings.Join(regs, ", ")) + if v := multiEnvSearch(regionEnvVars); v != "us-central1" { + t.Fatalf("One of %s must be set to us-central1 for acceptance tests", strings.Join(regionEnvVars, ", ")) } if v := os.Getenv("GOOGLE_XPN_HOST_PROJECT"); v == "" { @@ -111,3 +105,17 @@ func getTestProject(is *terraform.InstanceState, config *Config) (string, error) } return "", fmt.Errorf("%q: required field is not set", "project") } + +// getTestProjectFromEnv returns the current configured project from environment variables. +func getTestProjectFromEnv() string { + return multiEnvSearch(projectEnvVars) +} + +func multiEnvSearch(ks []string) string { + for _, k := range ks { + if v := os.Getenv(k); v != "" { + return v + } + } + return "" +} diff --git a/google/resource_google_project_test.go b/google/resource_google_project_test.go index ccafbb8d..5582bbdf 100644 --- a/google/resource_google_project_test.go +++ b/google/resource_google_project_test.go @@ -21,15 +21,6 @@ var ( originalPolicy *cloudresourcemanager.Policy ) -func multiEnvSearch(ks []string) string { - for _, k := range ks { - if v := os.Getenv(k); v != "" { - return v - } - } - return "" -} - // Test that a Project resource can be created and an IAM policy // associated func TestAccGoogleProject_create(t *testing.T) { diff --git a/google/resource_google_service_account_test.go b/google/resource_google_service_account_test.go index 6377be39..8c95efb9 100644 --- a/google/resource_google_service_account_test.go +++ b/google/resource_google_service_account_test.go @@ -9,14 +9,6 @@ import ( "github.com/hashicorp/terraform/terraform" ) -var ( - projectId = multiEnvSearch([]string{ - "GOOGLE_PROJECT", - "GCLOUD_PROJECT", - "CLOUDSDK_CORE_PROJECT", - }) -) - // Test that a service account resource can be created, updated, and destroyed func TestAccGoogleServiceAccount_basic(t *testing.T) { accountId := "a" + acctest.RandString(10) @@ -55,7 +47,7 @@ func TestAccGoogleServiceAccount_createPolicy(t *testing.T) { Steps: []resource.TestStep{ // The first step creates a basic service account with an IAM policy resource.TestStep{ - Config: testAccGoogleServiceAccountPolicy(accountId, projectId), + Config: testAccGoogleServiceAccountPolicy(accountId, getTestProjectFromEnv()), Check: resource.ComposeTestCheckFunc( testAccCheckGoogleServiceAccountPolicyCount("google_service_account.acceptance", 1), ), @@ -69,7 +61,7 @@ func TestAccGoogleServiceAccount_createPolicy(t *testing.T) { }, // The final step re-applies the IAM policy resource.TestStep{ - Config: testAccGoogleServiceAccountPolicy(accountId, projectId), + Config: testAccGoogleServiceAccountPolicy(accountId, getTestProjectFromEnv()), Check: resource.ComposeTestCheckFunc( testAccCheckGoogleServiceAccountPolicyCount("google_service_account.acceptance", 1), ), @@ -147,5 +139,5 @@ data "google_iam_policy" "service_account" { } }` - return fmt.Sprintf(t, account, name, account, projectId) + return fmt.Sprintf(t, account, name, account, getTestProjectFromEnv()) }