Cloud: fix e2e tests
- Fix tests and remove commented code - Remove parallel for some flaky tests - Add README
This commit is contained in:
parent
e07a7c472b
commit
5ef82ddd2f
2
go.mod
2
go.mod
|
@ -43,7 +43,7 @@ require (
|
|||
github.com/hashicorp/go-retryablehttp v0.7.0
|
||||
github.com/hashicorp/go-tfe v0.20.1-0.20211110172530-c43c6b574caa
|
||||
github.com/hashicorp/go-uuid v1.0.2
|
||||
github.com/hashicorp/go-version v1.2.1
|
||||
github.com/hashicorp/go-version v1.3.0
|
||||
github.com/hashicorp/hcl v0.0.0-20170504190234-a4b07c25de5f
|
||||
github.com/hashicorp/hcl/v2 v2.10.1
|
||||
github.com/hashicorp/terraform-config-inspect v0.0.0-20210209133302-4fd17a0faac2
|
||||
|
|
3
go.sum
3
go.sum
|
@ -388,8 +388,9 @@ github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b
|
|||
github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go-version v1.2.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go-version v1.2.1 h1:zEfKbn2+PDgroKdiOzqiE8rsmLqU2uwi5PB5pBJ3TkI=
|
||||
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/go-version v1.3.0 h1:McDWVJIU/y+u1BRV06dPaLfLCaT7fUTJLp5r04x7iNw=
|
||||
github.com/hashicorp/go-version v1.3.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
# How to run tests
|
||||
|
||||
To run them, use:
|
||||
```
|
||||
TF_ACC=1 go test -tags=e2e ./internal/cloud/e2e/... -ldflags "-X \"github.com/hashicorp/terraform/version.Prerelease=<PRE-RELEASE>\""
|
||||
```
|
||||
|
||||
Required flags
|
||||
* `-tags=e2e` for running e2e tests.
|
||||
* `TF_ACC=1`. This variable is used as part of terraform for tests that make
|
||||
external network calls. This is needed to run these tests. Without it, the
|
||||
tests do not run.
|
||||
* `TFE_TOKEN=<admin token>` and `TFE_HOSTNAME=<hostname>`. The helpers
|
||||
for these tests require admin access to a TFC/TFE instance.
|
||||
* `-timeout=30m`. Some of these tests take longer than the default 10m timeout for `go test`.
|
||||
|
||||
### Flags
|
||||
|
||||
* Use the `-v` flag for normal verbose mode.
|
||||
* Use the `-tfoutput` flag to print the terraform output to standard out.
|
||||
* Use `-ldflags` to change the version Prerelease to match a version
|
||||
available remotely. Some behaviors rely on the exact local version Terraform
|
||||
being available in TFC/TFE, and manipulating the Prerelease during build is
|
||||
often the only way to ensure this.
|
||||
[(More on `-ldflags`.)](https://www.digitalocean.com/community/tutorials/using-ldflags-to-set-version-information-for-go-applications)
|
|
@ -6,7 +6,6 @@ package main
|
|||
import (
|
||||
"context"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
|
@ -17,7 +16,6 @@ import (
|
|||
)
|
||||
|
||||
func Test_terraform_apply_autoApprove(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
|
@ -184,11 +182,12 @@ func Test_terraform_apply_autoApprove(t *testing.T) {
|
|||
},
|
||||
}
|
||||
for name, tc := range cases {
|
||||
log.Println("Test: ", name)
|
||||
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -201,7 +200,6 @@ func Test_terraform_apply_autoApprove(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=info")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
|
@ -253,5 +251,6 @@ func Test_terraform_apply_autoApprove(t *testing.T) {
|
|||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -51,9 +50,7 @@ func Test_backend_apply_before_init(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "local"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -77,10 +74,12 @@ func Test_backend_apply_before_init(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
fmt.Println("Test: ", name)
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -93,7 +92,6 @@ func Test_backend_apply_before_init(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=info")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
|
@ -140,5 +138,6 @@ func Test_backend_apply_before_init(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,10 @@ import (
|
|||
"testing"
|
||||
"time"
|
||||
|
||||
expect "github.com/Netflix/go-expect"
|
||||
tfe "github.com/hashicorp/go-tfe"
|
||||
"github.com/hashicorp/go-uuid"
|
||||
goversion "github.com/hashicorp/go-version"
|
||||
tfversion "github.com/hashicorp/terraform/version"
|
||||
)
|
||||
|
||||
|
@ -38,6 +40,16 @@ type testCases map[string]struct {
|
|||
validations func(t *testing.T, orgName string)
|
||||
}
|
||||
|
||||
func defaultOpts() []expect.ConsoleOpt {
|
||||
opts := []expect.ConsoleOpt{
|
||||
expect.WithDefaultTimeout(expectConsoleTimeout),
|
||||
}
|
||||
if verboseMode {
|
||||
opts = append(opts, expect.WithStdout(os.Stdout))
|
||||
}
|
||||
return opts
|
||||
}
|
||||
|
||||
func createOrganization(t *testing.T) (*tfe.Organization, func()) {
|
||||
ctx := context.Background()
|
||||
org, err := tfeClient.Organizations.Create(ctx, tfe.OrganizationCreateOptions{
|
||||
|
@ -193,9 +205,16 @@ func writeMainTF(t *testing.T, block string, dir string) {
|
|||
f.Close()
|
||||
}
|
||||
|
||||
// Ensure that TFC/E has a particular terraform version.
|
||||
// The e2e tests rely on the fact that the terraform version in TFC/E is able to
|
||||
// run the `cloud` configuration block, which is available in 1.1 and will
|
||||
// continue to be available in later versions. So this function checks that
|
||||
// there is a version that is >= 1.1.
|
||||
func skipWithoutRemoteTerraformVersion(t *testing.T) {
|
||||
version := tfversion.String()
|
||||
version := tfversion.Version
|
||||
baseVersion, err := goversion.NewVersion(version)
|
||||
if err != nil {
|
||||
t.Fatalf(fmt.Sprintf("Error instantiating go-version for %s", version))
|
||||
}
|
||||
opts := tfe.AdminTerraformVersionsListOptions{
|
||||
ListOptions: tfe.ListOptions{
|
||||
PageNumber: 1,
|
||||
|
@ -213,7 +232,12 @@ findTfVersion:
|
|||
t.Fatalf("Could not retrieve list of terraform versions: %v", err)
|
||||
}
|
||||
for _, item := range tfVersionList.Items {
|
||||
if item.Version == version {
|
||||
availableVersion, err := goversion.NewVersion(item.Version)
|
||||
if err != nil {
|
||||
t.Logf("Error instantiating go-version for %s", item.Version)
|
||||
continue
|
||||
}
|
||||
if availableVersion.Core().GreaterThanOrEqual(baseVersion.Core()) {
|
||||
hasVersion = true
|
||||
break findTfVersion
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -42,10 +41,12 @@ func Test_init_with_empty_tags(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
fmt.Println("Test: ", name)
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -58,7 +59,6 @@ func Test_init_with_empty_tags(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=info")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
|
@ -105,5 +105,6 @@ func Test_init_with_empty_tags(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"log"
|
||||
|
@ -22,6 +23,7 @@ var cliConfigFileEnv string
|
|||
var tfeClient *tfe.Client
|
||||
var tfeHostname string
|
||||
var tfeToken string
|
||||
var verboseMode bool
|
||||
|
||||
func TestMain(m *testing.M) {
|
||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||
|
@ -43,6 +45,10 @@ func accTest() bool {
|
|||
}
|
||||
|
||||
func setup() func() {
|
||||
tfOutput := flag.Bool("tfoutput", false, "This flag produces the terraform output from tests.")
|
||||
flag.Parse()
|
||||
verboseMode = *tfOutput
|
||||
|
||||
setTfeClient()
|
||||
teardown := setupBinary()
|
||||
|
||||
|
|
|
@ -16,7 +16,6 @@ import (
|
|||
)
|
||||
|
||||
func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
|
@ -38,9 +37,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "local"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -48,9 +45,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
expectedCmdOutput: `Created and switched to workspace "prod"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -113,9 +108,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "local"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -123,9 +116,7 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
expectedCmdOutput: `Created and switched to workspace "prod"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -171,10 +162,12 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -188,13 +181,11 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
defer tf.Close()
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
|
||||
for _, op := range tc.operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
t.Log("Running commands: ", tfCmd.command)
|
||||
tfCmd.command = append(tfCmd.command)
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
|
@ -241,12 +232,11 @@ func Test_migrate_multi_to_tfc_cloud_name_strategy(t *testing.T) {
|
|||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
|
@ -268,9 +258,7 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "local"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -278,9 +266,7 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
expectedCmdOutput: `Created and switched to workspace "prod"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -311,21 +297,12 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
{
|
||||
command: []string{"init", "-migrate-state"},
|
||||
expectedCmdOutput: `Terraform Cloud requires all workspaces to be given an explicit name.`,
|
||||
userInput: []string{"dev", "1", "app-*", "1"},
|
||||
userInput: []string{"dev", "1", "app-*"},
|
||||
postInputOutput: []string{
|
||||
`Would you like to rename your workspaces?`,
|
||||
"What pattern would you like to add to all your workspaces?",
|
||||
"The currently selected workspace (prod) does not exist.",
|
||||
"How would you like to rename your workspaces?",
|
||||
"Terraform Cloud has been successfully initialized!"},
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "app-prod"},
|
||||
expectedCmdOutput: `Switched to workspace "app-prod".`,
|
||||
},
|
||||
{
|
||||
command: []string{"output"},
|
||||
expectedCmdOutput: `val = "prod"`,
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "app-dev"},
|
||||
expectedCmdOutput: `Switched to workspace "app-dev".`,
|
||||
|
@ -334,6 +311,14 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
command: []string{"output"},
|
||||
expectedCmdOutput: `val = "default"`,
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "app-prod"},
|
||||
expectedCmdOutput: `Switched to workspace "app-prod".`,
|
||||
},
|
||||
{
|
||||
command: []string{"output"},
|
||||
expectedCmdOutput: `val = "prod"`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -417,17 +402,12 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
{
|
||||
command: []string{"init", "-migrate-state"},
|
||||
expectedCmdOutput: `Terraform Cloud requires all workspaces to be given an explicit name.`,
|
||||
userInput: []string{"dev", "1", "app-*", "1"},
|
||||
userInput: []string{"dev", "1", "app-*"},
|
||||
postInputOutput: []string{
|
||||
`Would you like to rename your workspaces?`,
|
||||
"What pattern would you like to add to all your workspaces?",
|
||||
"The currently selected workspace (default) does not exist.",
|
||||
"How would you like to rename your workspaces?",
|
||||
"Terraform Cloud has been successfully initialized!"},
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "app-dev"},
|
||||
expectedCmdOutput: `Switched to workspace "app-dev".`,
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "app-billing"},
|
||||
expectedCmdOutput: `Switched to workspace "app-billing".`,
|
||||
|
@ -436,6 +416,10 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
command: []string{"workspace", "select", "app-identity"},
|
||||
expectedCmdOutput: `Switched to workspace "app-identity".`,
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "app-dev"},
|
||||
expectedCmdOutput: `Switched to workspace "app-dev".`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -466,11 +450,12 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
t.Log(organization.Name)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -484,13 +469,11 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
defer tf.Close()
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
|
||||
for _, op := range tc.operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
t.Log("running commands: ", tfCmd.command)
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
cmd.Stdout = exp.Tty()
|
||||
|
@ -539,5 +522,6 @@ func Test_migrate_multi_to_tfc_cloud_tags_strategy(t *testing.T) {
|
|||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,16 +15,10 @@ import (
|
|||
)
|
||||
|
||||
func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
cases := map[string]struct {
|
||||
operations []operationSets
|
||||
validations func(t *testing.T, orgName string)
|
||||
}{
|
||||
"backend name strategy, to cloud with name strategy": {
|
||||
operations: []operationSets{
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
remoteWorkspace := "remote-workspace"
|
||||
|
@ -37,9 +31,7 @@ func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "remote"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "remote-workspace"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -63,8 +55,8 @@ func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
expectedName := "cloud-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
|
@ -73,63 +65,9 @@ func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
|||
if ws == nil {
|
||||
t.Fatalf("Expected workspace %s to be present, but is not.", expectedName)
|
||||
}
|
||||
},
|
||||
},
|
||||
"backend name strategy, to cloud name strategy, using the same name": {
|
||||
operations: []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
remoteWorkspace := "remote-workspace"
|
||||
tfBlock := terraformConfigRemoteBackendName(orgName, remoteWorkspace)
|
||||
writeMainTF(t, tfBlock, dir)
|
||||
},
|
||||
commands: []tfCommand{
|
||||
{
|
||||
command: []string{"init"},
|
||||
expectedCmdOutput: `Successfully configured the backend "remote"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "remote-workspace"?`,
|
||||
userInput: []string{"yes"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
wsName := "remote-workspace"
|
||||
tfBlock := terraformConfigCloudBackendName(orgName, wsName)
|
||||
writeMainTF(t, tfBlock, dir)
|
||||
},
|
||||
commands: []tfCommand{
|
||||
{
|
||||
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
||||
expectedCmdOutput: `Terraform Cloud has been successfully initialized!`,
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "show"},
|
||||
expectedCmdOutput: `remote-workspace`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
expectedName := "remote-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if ws == nil {
|
||||
t.Fatalf("Expected workspace %s to be present, but is not.", expectedName)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -142,13 +80,12 @@ func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range tc.operations {
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
|
@ -193,23 +130,15 @@ func Test_migrate_remote_backend_name_to_tfc_name(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
||||
t.Parallel()
|
||||
func Test_migrate_remote_backend_name_to_tfc_same_name(t *testing.T) {
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
cases := map[string]struct {
|
||||
operations []operationSets
|
||||
validations func(t *testing.T, orgName string)
|
||||
}{
|
||||
"backend name strategy, to cloud name strategy, using the same name, different organization": {
|
||||
operations: []operationSets{
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
remoteWorkspace := "remote-workspace"
|
||||
|
@ -222,9 +151,126 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "remote"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "remote-workspace"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
wsName := "remote-workspace"
|
||||
tfBlock := terraformConfigCloudBackendName(orgName, wsName)
|
||||
writeMainTF(t, tfBlock, dir)
|
||||
},
|
||||
commands: []tfCommand{
|
||||
{
|
||||
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
||||
expectedCmdOutput: `Terraform Cloud has been successfully initialized!`,
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "show"},
|
||||
expectedCmdOutput: `remote-workspace`,
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
expectedName := "remote-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if ws == nil {
|
||||
t.Fatalf("Expected workspace %s to be present, but is not.", expectedName)
|
||||
}
|
||||
}
|
||||
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer exp.Close()
|
||||
|
||||
tmpDir, err := ioutil.TempDir("", "terraform-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
cmd.Stdout = exp.Tty()
|
||||
cmd.Stderr = exp.Tty()
|
||||
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if tfCmd.expectedCmdOutput != "" {
|
||||
_, err := exp.ExpectString(tfCmd.expectedCmdOutput)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
lenInput := len(tfCmd.userInput)
|
||||
lenInputOutput := len(tfCmd.postInputOutput)
|
||||
if lenInput > 0 {
|
||||
for i := 0; i < lenInput; i++ {
|
||||
input := tfCmd.userInput[i]
|
||||
exp.SendLine(input)
|
||||
// use the index to find the corresponding
|
||||
// output that matches the input.
|
||||
if lenInputOutput-1 >= i {
|
||||
output := tfCmd.postInputOutput[i]
|
||||
_, err := exp.ExpectString(output)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
remoteWorkspace := "remote-workspace"
|
||||
tfBlock := terraformConfigRemoteBackendName(orgName, remoteWorkspace)
|
||||
writeMainTF(t, tfBlock, dir)
|
||||
},
|
||||
commands: []tfCommand{
|
||||
{
|
||||
command: []string{"init"},
|
||||
expectedCmdOutput: `Successfully configured the backend "remote"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -248,8 +294,8 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
expectedName := "remote-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
|
@ -258,13 +304,9 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
|||
if ws == nil {
|
||||
t.Fatalf("Expected workspace %s to be present, but is not.", expectedName)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -277,7 +319,6 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
|
@ -287,7 +328,7 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
|||
defer cleanupTwo()
|
||||
orgs := []string{orgOne.Name, orgTwo.Name}
|
||||
var orgName string
|
||||
for index, op := range tc.operations {
|
||||
for index, op := range operations {
|
||||
orgName = orgs[index]
|
||||
op.prep(t, orgName, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
|
@ -333,23 +374,16 @@ func Test_migrate_remote_backend_name_to_tfc_name_different_org(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if tc.validations != nil {
|
||||
tc.validations(t, orgName)
|
||||
}
|
||||
if validations != nil {
|
||||
validations(t, orgName)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
cases := map[string]struct {
|
||||
operations []operationSets
|
||||
validations func(t *testing.T, orgName string)
|
||||
}{
|
||||
"single workspace with backend name strategy, to cloud with tags strategy": {
|
||||
operations: []operationSets{
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
remoteWorkspace := "remote-workspace"
|
||||
|
@ -362,9 +396,7 @@ func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "remote"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "remote-workspace"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -394,8 +426,8 @@ func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
wsList, err := tfeClient.Workspaces.List(ctx, orgName, tfe.WorkspaceListOptions{
|
||||
Tags: tfe.String("app"),
|
||||
})
|
||||
|
@ -409,13 +441,9 @@ func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
|||
if ws.Name != "cloud-workspace" {
|
||||
t.Fatalf("Expected workspace to be `cloud-workspace`, but is %s", ws.Name)
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -428,13 +456,12 @@ func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range tc.operations {
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
|
@ -479,23 +506,16 @@ func Test_migrate_remote_backend_name_to_tfc_tags(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
||||
t.Parallel()
|
||||
func Test_migrate_remote_backend_prefix_to_tfc_name_strategy_single_workspace(t *testing.T) {
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
cases := map[string]struct {
|
||||
operations []operationSets
|
||||
validations func(t *testing.T, orgName string)
|
||||
}{
|
||||
"single workspace with backend prefix strategy, to cloud with name strategy": {
|
||||
operations: []operationSets{
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
_ = createWorkspace(t, orgName, tfe.WorkspaceCreateOptions{Name: tfe.String("app-one")})
|
||||
|
@ -509,9 +529,7 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
expectedCmdOutput: `Terraform has been successfully initialized!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "app-one"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -536,8 +554,8 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
expectedName := "cloud-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
|
@ -546,10 +564,81 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
if ws == nil {
|
||||
t.Fatalf("Expected workspace %s to be present, but is not.", expectedName)
|
||||
}
|
||||
},
|
||||
},
|
||||
"multiple workspaces with backend prefix strategy, to cloud with name strategy": {
|
||||
operations: []operationSets{
|
||||
}
|
||||
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer exp.Close()
|
||||
|
||||
tmpDir, err := ioutil.TempDir("", "terraform-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
cmd.Stdout = exp.Tty()
|
||||
cmd.Stderr = exp.Tty()
|
||||
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if tfCmd.expectedCmdOutput != "" {
|
||||
_, err := exp.ExpectString(tfCmd.expectedCmdOutput)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
lenInput := len(tfCmd.userInput)
|
||||
lenInputOutput := len(tfCmd.postInputOutput)
|
||||
if lenInput > 0 {
|
||||
for i := 0; i < lenInput; i++ {
|
||||
input := tfCmd.userInput[i]
|
||||
exp.SendLine(input)
|
||||
// use the index to find the corresponding
|
||||
// output that matches the input.
|
||||
if lenInputOutput-1 >= i {
|
||||
output := tfCmd.postInputOutput[i]
|
||||
_, err := exp.ExpectString(output)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_prefix_to_tfc_name_strategy_multi_workspace(t *testing.T) {
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
_ = createWorkspace(t, orgName, tfe.WorkspaceCreateOptions{Name: tfe.String("app-one")})
|
||||
|
@ -566,9 +655,7 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
postInputOutput: []string{`Terraform has been successfully initialized!`},
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "app-one"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
{
|
||||
|
@ -601,8 +688,8 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
expectedName := "cloud-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
|
@ -630,13 +717,9 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
if empty {
|
||||
t.Fatalf("expected workspaces to include 'app-two' but didn't.")
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -649,13 +732,12 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range tc.operations {
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
|
@ -700,23 +782,16 @@ func Test_migrate_remote_backend_prefix_to_tfc_name(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
||||
t.Parallel()
|
||||
func Test_migrate_remote_backend_prefix_to_tfc_tags_strategy_single_workspace(t *testing.T) {
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
cases := map[string]struct {
|
||||
operations []operationSets
|
||||
validations func(t *testing.T, orgName string)
|
||||
}{
|
||||
"single workspace with backend prefix strategy, to cloud with tags strategy": {
|
||||
operations: []operationSets{
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
_ = createWorkspace(t, orgName, tfe.WorkspaceCreateOptions{Name: tfe.String("app-one")})
|
||||
|
@ -730,9 +805,7 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
expectedCmdOutput: `Terraform has been successfully initialized!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "app-one"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -758,8 +831,8 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
expectedName := "cloud-workspace"
|
||||
ws, err := tfeClient.Workspaces.Read(ctx, orgName, expectedName)
|
||||
if err != nil {
|
||||
|
@ -768,10 +841,81 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
if ws == nil {
|
||||
t.Fatalf("Expected workspace %s to be present, but is not.", expectedName)
|
||||
}
|
||||
},
|
||||
},
|
||||
"multiple workspaces with backend prefix strategy, to cloud with tags strategy": {
|
||||
operations: []operationSets{
|
||||
}
|
||||
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer exp.Close()
|
||||
|
||||
tmpDir, err := ioutil.TempDir("", "terraform-test")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
cmd.Stdout = exp.Tty()
|
||||
cmd.Stderr = exp.Tty()
|
||||
|
||||
err = cmd.Start()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if tfCmd.expectedCmdOutput != "" {
|
||||
_, err := exp.ExpectString(tfCmd.expectedCmdOutput)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
lenInput := len(tfCmd.userInput)
|
||||
lenInputOutput := len(tfCmd.postInputOutput)
|
||||
if lenInput > 0 {
|
||||
for i := 0; i < lenInput; i++ {
|
||||
input := tfCmd.userInput[i]
|
||||
exp.SendLine(input)
|
||||
// use the index to find the corresponding
|
||||
// output that matches the input.
|
||||
if lenInputOutput-1 >= i {
|
||||
output := tfCmd.postInputOutput[i]
|
||||
_, err := exp.ExpectString(output)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_remote_backend_prefix_to_tfc_tags_strategy_multi_workspace(t *testing.T) {
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
operations := []operationSets{
|
||||
{
|
||||
prep: func(t *testing.T, orgName, dir string) {
|
||||
_ = createWorkspace(t, orgName, tfe.WorkspaceCreateOptions{Name: tfe.String("app-one")})
|
||||
|
@ -813,23 +957,22 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
commands: []tfCommand{
|
||||
{
|
||||
command: []string{"init", "-migrate-state", "-ignore-remote-version"},
|
||||
expectedCmdOutput: `Would you like to rename your workspaces?`,
|
||||
userInput: []string{"1", "*"},
|
||||
postInputOutput: []string{`What pattern would you like to add to all your workspaces?`,
|
||||
`Terraform Cloud has been successfully initialized!`},
|
||||
expectedCmdOutput: `Do you wish to proceed?`,
|
||||
userInput: []string{"yes"},
|
||||
postInputOutput: []string{`Terraform Cloud has been successfully initialized!`},
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "show"},
|
||||
expectedCmdOutput: "two", // this comes from the original workspace name from the previous backend.
|
||||
expectedCmdOutput: "app-two",
|
||||
},
|
||||
{
|
||||
command: []string{"workspace", "select", "one"},
|
||||
expectedCmdOutput: `Switched to workspace "one".`, // this comes from the original workspace name from the previous backend.
|
||||
command: []string{"workspace", "select", "app-one"},
|
||||
expectedCmdOutput: `Switched to workspace "app-one".`,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
}
|
||||
validations := func(t *testing.T, orgName string) {
|
||||
wsList, err := tfeClient.Workspaces.List(ctx, orgName, tfe.WorkspaceListOptions{
|
||||
Tags: tfe.String("app"),
|
||||
})
|
||||
|
@ -839,27 +982,23 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
if len(wsList.Items) != 2 {
|
||||
t.Logf("Expected the number of workspaces to be 2, but got %d", len(wsList.Items))
|
||||
}
|
||||
ws, empty := getWorkspace(wsList.Items, "one")
|
||||
ws, empty := getWorkspace(wsList.Items, "app-one")
|
||||
if empty {
|
||||
t.Fatalf("expected workspaces to include 'one' but didn't.")
|
||||
t.Fatalf("expected workspaces to include 'app-one' but didn't.")
|
||||
}
|
||||
if len(ws.TagNames) == 0 {
|
||||
t.Fatalf("expected workspaces 'one' to have tags.")
|
||||
}
|
||||
ws, empty = getWorkspace(wsList.Items, "two")
|
||||
ws, empty = getWorkspace(wsList.Items, "app-two")
|
||||
if empty {
|
||||
t.Fatalf("expected workspaces to include 'two' but didn't.")
|
||||
t.Fatalf("expected workspaces to include 'app-two' but didn't.")
|
||||
}
|
||||
if len(ws.TagNames) == 0 {
|
||||
t.Fatalf("expected workspaces 'two' to have tags.")
|
||||
t.Fatalf("expected workspaces 'app-two' to have tags.")
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -872,13 +1011,12 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
for _, op := range tc.operations {
|
||||
for _, op := range operations {
|
||||
op.prep(t, organization.Name, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
|
@ -923,8 +1061,7 @@ func Test_migrate_remote_backend_prefix_to_tfc_tags(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
if validations != nil {
|
||||
validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,7 +15,6 @@ import (
|
|||
)
|
||||
|
||||
func Test_migrate_single_to_tfc(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
|
@ -37,9 +36,7 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "local"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -88,9 +85,7 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
|||
expectedCmdOutput: `Successfully configured the backend "local"!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -133,10 +128,12 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -149,7 +146,6 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=info")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
|
@ -201,5 +197,6 @@ func Test_migrate_single_to_tfc(t *testing.T) {
|
|||
if tc.validations != nil {
|
||||
tc.validations(t, organization.Name)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,6 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -14,7 +13,6 @@ import (
|
|||
)
|
||||
|
||||
func Test_migrate_tfc_to_other(t *testing.T) {
|
||||
t.Parallel()
|
||||
cases := map[string]struct {
|
||||
operations []operationSets
|
||||
}{
|
||||
|
@ -51,10 +49,12 @@ func Test_migrate_tfc_to_other(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
fmt.Println("Test: ", name)
|
||||
tc := tc
|
||||
t.Run(name, func(t *testing.T) {
|
||||
t.Parallel()
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -67,7 +67,6 @@ func Test_migrate_tfc_to_other(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=info")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
defer tf.Close()
|
||||
|
||||
|
@ -114,5 +113,6 @@ func Test_migrate_tfc_to_other(t *testing.T) {
|
|||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,7 +16,6 @@ import (
|
|||
)
|
||||
|
||||
func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
ctx := context.Background()
|
||||
|
||||
|
@ -55,9 +54,7 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
expectedCmdOutput: `prod`, // this comes from the `prep` function
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "prod"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -119,9 +116,7 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
expectedCmdOutput: `Terraform Cloud has been successfully initialized!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "prod"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -183,9 +178,7 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
expectedCmdOutput: `Terraform Cloud has been successfully initialized!`,
|
||||
},
|
||||
{
|
||||
command: []string{"apply"},
|
||||
expectedCmdOutput: `Do you want to perform these actions in workspace "prod"?`,
|
||||
userInput: []string{"yes"},
|
||||
command: []string{"apply", "-auto-approve"},
|
||||
postInputOutput: []string{`Apply complete!`},
|
||||
},
|
||||
},
|
||||
|
@ -214,23 +207,22 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
},
|
||||
},
|
||||
validations: func(t *testing.T, orgName string) {
|
||||
wsList, err := tfeClient.Workspaces.List(ctx, orgName, tfe.WorkspaceListOptions{
|
||||
Tags: tfe.String("app"),
|
||||
})
|
||||
// We created the workspace, so it will be there. We could not complete the state migration,
|
||||
// though, so the workspace should be empty.
|
||||
ws, err := tfeClient.Workspaces.ReadWithOptions(ctx, orgName, "new-workspace", &tfe.WorkspaceReadOptions{Include: "current_run"})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
// The migration never occured, so we have no workspaces with this tag.
|
||||
if len(wsList.Items) != 0 {
|
||||
t.Fatalf("Expected number of workspaces to be 0, but got %d", len(wsList.Items))
|
||||
if ws.CurrentRun != nil {
|
||||
t.Fatal("Expected to workspace be empty")
|
||||
}
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
t.Run(name, func(t *testing.T) {
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -244,7 +236,6 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
defer tf.Close()
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
|
||||
orgName, cleanup := tc.setup(t)
|
||||
|
@ -252,7 +243,6 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
for _, op := range tc.operations {
|
||||
op.prep(t, orgName, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
t.Log("Running commands: ", tfCmd.command)
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
cmd.Stdout = exp.Tty()
|
||||
|
@ -298,11 +288,11 @@ func Test_migrate_tfc_to_tfc_single_workspace(t *testing.T) {
|
|||
if tc.validations != nil {
|
||||
tc.validations(t, orgName)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
ctx := context.Background()
|
||||
|
@ -454,7 +444,6 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
tag := "billing"
|
||||
tfBlock := terraformConfigCloudBackendTags(orgName, tag)
|
||||
writeMainTF(t, tfBlock, dir)
|
||||
t.Log(orgName)
|
||||
},
|
||||
commands: []tfCommand{
|
||||
{
|
||||
|
@ -462,8 +451,7 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
expectedCmdOutput: `Would you like to rename your workspaces?`,
|
||||
userInput: []string{"1", "new-*", "1"},
|
||||
postInputOutput: []string{
|
||||
`What pattern would you like to add to all your workspaces?`,
|
||||
`The currently selected workspace (app-staging) does not exist.`,
|
||||
`How would you like to rename your workspaces?`,
|
||||
`Terraform Cloud has been successfully initialized!`},
|
||||
},
|
||||
},
|
||||
|
@ -492,8 +480,8 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
t.Log("Test: ", name)
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
t.Run(name, func(t *testing.T) {
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -507,7 +495,6 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
defer tf.Close()
|
||||
tf.AddEnv("TF_LOG=INFO")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
|
||||
orgName, cleanup := tc.setup(t)
|
||||
|
@ -515,7 +502,6 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
for _, op := range tc.operations {
|
||||
op.prep(t, orgName, tf.WorkDir())
|
||||
for _, tfCmd := range op.commands {
|
||||
t.Log("Running commands: ", tfCmd.command)
|
||||
cmd := tf.Cmd(tfCmd.command...)
|
||||
cmd.Stdin = exp.Tty()
|
||||
cmd.Stdout = exp.Tty()
|
||||
|
@ -551,7 +537,6 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
t.Log(cmd.Stderr)
|
||||
err = cmd.Wait()
|
||||
if err != nil {
|
||||
t.Fatal(err.Error())
|
||||
|
@ -562,5 +547,6 @@ func Test_migrate_tfc_to_tfc_multiple_workspace(t *testing.T) {
|
|||
if tc.validations != nil {
|
||||
tc.validations(t, orgName)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -46,7 +46,6 @@ output "test_env" {
|
|||
}
|
||||
|
||||
func Test_cloud_run_variables(t *testing.T) {
|
||||
t.Parallel()
|
||||
skipWithoutRemoteTerraformVersion(t)
|
||||
|
||||
cases := testCases{
|
||||
|
@ -78,10 +77,10 @@ func Test_cloud_run_variables(t *testing.T) {
|
|||
}
|
||||
|
||||
for name, tc := range cases {
|
||||
fmt.Println("Test: ", name)
|
||||
t.Run(name, func(t *testing.T) {
|
||||
organization, cleanup := createOrganization(t)
|
||||
defer cleanup()
|
||||
exp, err := expect.NewConsole(expect.WithStdout(os.Stdout), expect.WithDefaultTimeout(expectConsoleTimeout))
|
||||
exp, err := expect.NewConsole(defaultOpts()...)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -94,7 +93,6 @@ func Test_cloud_run_variables(t *testing.T) {
|
|||
defer os.RemoveAll(tmpDir)
|
||||
|
||||
tf := e2e.NewBinary(terraformBin, tmpDir)
|
||||
tf.AddEnv("TF_LOG=info")
|
||||
tf.AddEnv("TF_CLI_ARGS=-no-color")
|
||||
tf.AddEnv("TF_VAR_baz=qux")
|
||||
tf.AddEnv(cliConfigFileEnv)
|
||||
|
@ -116,7 +114,7 @@ func Test_cloud_run_variables(t *testing.T) {
|
|||
if tfCmd.expectedCmdOutput != "" {
|
||||
_, err := exp.ExpectString(tfCmd.expectedCmdOutput)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
t.Fatalf(`Expected command output "%s", but got %v `, tfCmd.expectedCmdOutput, err)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -132,7 +130,7 @@ func Test_cloud_run_variables(t *testing.T) {
|
|||
output := tfCmd.postInputOutput[i]
|
||||
_, err := exp.ExpectString(output)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
t.Fatalf(`Expected command output "%s", but got %v `, tfCmd.expectedCmdOutput, err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -148,5 +146,6 @@ func Test_cloud_run_variables(t *testing.T) {
|
|||
tc.validations(t, organization.Name)
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue