github.com/terraform-modules-krish/terratest@v0.29.0/modules/terraform/plan_test.go (about) 1 package terraform 2 3 import ( 4 "testing" 5 6 "github.com/terraform-modules-krish/terratest/modules/files" 7 "github.com/stretchr/testify/require" 8 ) 9 10 func TestInitAndPlanWithError(t *testing.T) { 11 t.Parallel() 12 13 testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-with-plan-error", t.Name()) 14 require.NoError(t, err) 15 16 options := &Options{ 17 TerraformDir: testFolder, 18 } 19 20 _, err = InitAndPlanE(t, options) 21 require.Error(t, err) 22 } 23 24 func TestInitAndPlanWithNoError(t *testing.T) { 25 t.Parallel() 26 27 testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-no-error", t.Name()) 28 require.NoError(t, err) 29 30 options := &Options{ 31 TerraformDir: testFolder, 32 } 33 34 out, err := InitAndPlanE(t, options) 35 require.NoError(t, err) 36 require.Contains(t, out, "No changes. Infrastructure is up-to-date.") 37 } 38 39 func TestPlanWithExitCodeWithNoChanges(t *testing.T) { 40 t.Parallel() 41 testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-no-error", t.Name()) 42 require.NoError(t, err) 43 44 options := &Options{ 45 TerraformDir: testFolder, 46 } 47 exitCode := InitAndPlanWithExitCode(t, options) 48 require.Equal(t, DefaultSuccessExitCode, exitCode) 49 } 50 51 func TestPlanWithExitCodeWithChanges(t *testing.T) { 52 t.Parallel() 53 testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-basic-configuration", t.Name()) 54 require.NoError(t, err) 55 56 options := &Options{ 57 TerraformDir: testFolder, 58 Vars: map[string]interface{}{ 59 "cnt": 1, 60 }, 61 } 62 exitCode := InitAndPlanWithExitCode(t, options) 63 require.Equal(t, TerraformPlanChangesPresentExitCode, exitCode) 64 } 65 66 func TestPlanWithExitCodeWithFailure(t *testing.T) { 67 t.Parallel() 68 69 testFolder, err := files.CopyTerraformFolderToTemp("../../test/fixtures/terraform-with-plan-error", t.Name()) 70 require.NoError(t, err) 71 72 options := &Options{ 73 TerraformDir: testFolder, 74 } 75 76 exitCode, getExitCodeErr := InitAndPlanWithExitCodeE(t, options) 77 require.NoError(t, getExitCodeErr) 78 require.Equal(t, exitCode, 1) 79 } 80 81 func TestTgPlanAllNoError(t *testing.T) { 82 t.Parallel() 83 84 testFolder, err := files.CopyTerragruntFolderToTemp("../../test/fixtures/terragrunt/terragrunt-multi-plan", t.Name()) 85 require.NoError(t, err) 86 87 options := &Options{ 88 TerraformDir: testFolder, 89 TerraformBinary: "terragrunt", 90 } 91 92 getExitCode, errExitCode := TgPlanAllExitCodeE(t, options) 93 // GetExitCodeForRunCommandError was unable to determine the exit code correctly 94 if errExitCode != nil { 95 t.Fatal(errExitCode) 96 } 97 98 // Since PlanAllExitCodeTgE returns error codes, we want to compare against 1 99 require.Equal(t, DefaultSuccessExitCode, getExitCode) 100 } 101 102 func TestTgPlanAllWithError(t *testing.T) { 103 t.Parallel() 104 105 testFolder, err := files.CopyTerragruntFolderToTemp("../../test/fixtures/terragrunt/terragrunt-with-plan-error", t.Name()) 106 require.NoError(t, err) 107 108 options := &Options{ 109 TerraformDir: testFolder, 110 TerraformBinary: "terragrunt", 111 } 112 113 getExitCode, errExitCode := TgPlanAllExitCodeE(t, options) 114 // GetExitCodeForRunCommandError was unable to determine the exit code correctly 115 require.NoError(t, errExitCode) 116 117 require.Equal(t, DefaultErrorExitCode, getExitCode) 118 }