blob: 5704f274b4d3de8d2d6dda39f5549fbeb3b53ec6 [file] [log] [blame]
package tfexec
import (
"context"
"errors"
"fmt"
"runtime"
"testing"
"github.com/hashicorp/terraform-exec/tfexec/internal/testutil"
)
func TestUpgrade013(t *testing.T) {
if runtime.GOOS == "darwin" && runtime.GOARCH == "arm64" {
t.Skip("Terraform for darwin/arm64 is not available until v1")
}
td := t.TempDir()
t.Run("defaults", func(t *testing.T) {
tf, err := NewTerraform(td, tfVersion(t, testutil.Latest013))
if err != nil {
t.Fatal(err)
}
// empty env, to avoid environ mismatch in testing
tf.SetEnv(map[string]string{})
upgrade013Cmd, err := tf.upgrade013Cmd(context.Background())
if err != nil {
t.Fatal(err)
}
assertCmd(t, []string{
"0.13upgrade",
"-no-color",
"-yes",
}, nil, upgrade013Cmd)
})
t.Run("override all defaults", func(t *testing.T) {
tf, err := NewTerraform(td, tfVersion(t, testutil.Latest013))
if err != nil {
t.Fatal(err)
}
// empty env, to avoid environ mismatch in testing
tf.SetEnv(map[string]string{})
upgrade013Cmd, err := tf.upgrade013Cmd(context.Background(), Dir("upgrade013dir"))
if err != nil {
t.Fatal(err)
}
assertCmd(t, []string{
"0.13upgrade",
"-no-color",
"-yes",
"upgrade013dir",
}, nil, upgrade013Cmd)
})
unsupportedVersions := []string{
testutil.Latest011,
testutil.Latest012,
testutil.Latest014,
testutil.Latest015,
}
for _, tfv := range unsupportedVersions {
t.Run(fmt.Sprintf("unsupported on %s", tfv), func(t *testing.T) {
tf, err := NewTerraform(td, tfVersion(t, tfv))
if err != nil {
t.Fatal(err)
}
// empty env, to avoid environ mismatch in testing
tf.SetEnv(map[string]string{})
_, err = tf.upgrade013Cmd(context.Background())
if err == nil {
t.Fatalf("expected unsupported version %s to fail", tfv)
}
var expectedErr *ErrVersionMismatch
if !errors.As(err, &expectedErr) {
t.Fatalf("error doesn't match: %#v", err)
}
})
}
}