| package tfexec | 
 |  | 
 | import ( | 
 | 	"context" | 
 | 	"testing" | 
 |  | 
 | 	"github.com/hashicorp/terraform-exec/tfexec/internal/testutil" | 
 | ) | 
 |  | 
 | func TestApplyCmd(t *testing.T) { | 
 | 	td := t.TempDir() | 
 |  | 
 | 	tf, err := NewTerraform(td, tfVersion(t, testutil.Latest_v1)) | 
 | 	if err != nil { | 
 | 		t.Fatal(err) | 
 | 	} | 
 |  | 
 | 	// empty env, to avoid environ mismatch in testing | 
 | 	tf.SetEnv(map[string]string{}) | 
 |  | 
 | 	t.Run("basic", func(t *testing.T) { | 
 | 		applyCmd, err := tf.applyCmd(context.Background(), | 
 | 			Backup("testbackup"), | 
 | 			LockTimeout("200s"), | 
 | 			State("teststate"), | 
 | 			StateOut("teststateout"), | 
 | 			VarFile("foo.tfvars"), | 
 | 			VarFile("bar.tfvars"), | 
 | 			Lock(false), | 
 | 			Parallelism(99), | 
 | 			Refresh(false), | 
 | 			Replace("aws_instance.test"), | 
 | 			Replace("google_pubsub_topic.test"), | 
 | 			Target("target1"), | 
 | 			Target("target2"), | 
 | 			Var("var1=foo"), | 
 | 			Var("var2=bar"), | 
 | 			DirOrPlan("testfile"), | 
 | 		) | 
 | 		if err != nil { | 
 | 			t.Fatal(err) | 
 | 		} | 
 |  | 
 | 		assertCmd(t, []string{ | 
 | 			"apply", | 
 | 			"-no-color", | 
 | 			"-auto-approve", | 
 | 			"-input=false", | 
 | 			"-backup=testbackup", | 
 | 			"-lock-timeout=200s", | 
 | 			"-state=teststate", | 
 | 			"-state-out=teststateout", | 
 | 			"-var-file=foo.tfvars", | 
 | 			"-var-file=bar.tfvars", | 
 | 			"-lock=false", | 
 | 			"-parallelism=99", | 
 | 			"-refresh=false", | 
 | 			"-replace=aws_instance.test", | 
 | 			"-replace=google_pubsub_topic.test", | 
 | 			"-target=target1", | 
 | 			"-target=target2", | 
 | 			"-var", "var1=foo", | 
 | 			"-var", "var2=bar", | 
 | 			"testfile", | 
 | 		}, nil, applyCmd) | 
 | 	}) | 
 | } |