github.com/hazelops/ize@v1.1.12-0.20230915191306-97d7c0e48f11/tests/e2e/terraform_test.go (about) 1 //go:build e2e && terraform 2 // +build e2e,terraform 3 4 package test 5 6 import ( 7 "fmt" 8 "os" 9 "strings" 10 "testing" 11 ) 12 13 // We're testing that we can download and run typical Terraform versions via ize 14 func TestIzeTerraformVersion_1_0_10(t *testing.T) { 15 terraformVersion := "1.0.10" 16 if examplesRootDir == "" { 17 t.Fatalf("Missing required environment variable IZE_EXAMPLES_PATH") 18 } 19 20 ize := NewBinary(t, izeBinary, examplesRootDir) 21 22 stdout, stderr, err := ize.RunRaw(fmt.Sprintf("--terraform-version=%s", terraformVersion), "terraform", "version") 23 24 if err != nil { 25 t.Errorf("error: %s", err) 26 } 27 28 if stderr != "" { 29 t.Errorf("unexpected stderr output ize terraform version: %s", err) 30 } 31 32 if !strings.Contains(stdout, fmt.Sprintf("Terraform v%s", terraformVersion)) { 33 t.Errorf("No success message detected after terraform version:\n%s", stdout) 34 } else { 35 t.Log(fmt.Sprintf("PASS: v%s: terraform version", terraformVersion)) 36 } 37 38 if os.Getenv("RUNNER_DEBUG") == "1" { 39 t.Log(stdout) 40 } 41 } 42 43 func TestIzeTerraformVersion_1_1_3(t *testing.T) { 44 45 terraformVersion := "1.1.3" 46 47 if examplesRootDir == "" { 48 t.Fatalf("Missing required environment variable IZE_EXAMPLES_PATH") 49 } 50 51 ize := NewBinary(t, izeBinary, examplesRootDir) 52 53 stdout, stderr, err := ize.RunRaw(fmt.Sprintf("--terraform-version=%s", terraformVersion), "terraform", "version") 54 55 if err != nil { 56 t.Errorf("error: %s", err) 57 } 58 59 if stderr != "" { 60 t.Errorf("unexpected stderr output ize terraform version: %s", err) 61 } 62 63 if !strings.Contains(stdout, fmt.Sprintf("Terraform v%s", terraformVersion)) { 64 t.Errorf("No success message detected after terraform version:\n%s", stdout) 65 } else { 66 t.Log(fmt.Sprintf("PASS: v%s: terraform version", terraformVersion)) 67 } 68 69 if os.Getenv("RUNNER_DEBUG") == "1" { 70 t.Log(stdout) 71 } 72 } 73 74 func TestIzeTerraformVersion_1_1_7(t *testing.T) { 75 76 terraformVersion := "1.1.7" 77 78 if examplesRootDir == "" { 79 t.Fatalf("Missing required environment variable IZE_EXAMPLES_PATH") 80 } 81 82 ize := NewBinary(t, izeBinary, examplesRootDir) 83 84 stdout, stderr, err := ize.RunRaw(fmt.Sprintf("--terraform-version=%s", terraformVersion), "terraform", "version") 85 86 if err != nil { 87 t.Errorf("error: %s", err) 88 } 89 90 if stderr != "" { 91 t.Errorf("unexpected stderr output ize terraform version: %s", err) 92 } 93 94 if !strings.Contains(stdout, fmt.Sprintf("Terraform v%s", terraformVersion)) { 95 t.Errorf("No success message detected after terraform version:\n%s", stdout) 96 } else { 97 t.Log(fmt.Sprintf("PASS: v%s: terraform version", terraformVersion)) 98 } 99 100 if os.Getenv("RUNNER_DEBUG") == "1" { 101 t.Log(stdout) 102 } 103 } 104 105 func TestIzeTerraformVersion_1_2_6(t *testing.T) { 106 107 terraformVersion := "1.2.6" 108 109 if examplesRootDir == "" { 110 t.Fatalf("Missing required environment variable IZE_EXAMPLES_PATH") 111 } 112 113 ize := NewBinary(t, izeBinary, examplesRootDir) 114 115 stdout, stderr, err := ize.RunRaw(fmt.Sprintf("--terraform-version=%s", terraformVersion), "terraform", "version") 116 117 if err != nil { 118 t.Errorf("error: %s", err) 119 } 120 121 if stderr != "" { 122 t.Errorf("unexpected stderr output ize terraform version: %s", err) 123 } 124 125 if !strings.Contains(stdout, fmt.Sprintf("Terraform v%s", terraformVersion)) { 126 t.Errorf("No success message detected after terraform version:\n%s", stdout) 127 } else { 128 t.Log(fmt.Sprintf("PASS: v%s: terraform version", terraformVersion)) 129 } 130 131 if os.Getenv("RUNNER_DEBUG") == "1" { 132 t.Log(stdout) 133 } 134 } 135 136 func TestIzeTerraformVersion_1_2_7(t *testing.T) { 137 138 terraformVersion := "1.2.7" 139 140 if examplesRootDir == "" { 141 t.Fatalf("Missing required environment variable IZE_EXAMPLES_PATH") 142 } 143 144 ize := NewBinary(t, izeBinary, examplesRootDir) 145 146 stdout, stderr, err := ize.RunRaw(fmt.Sprintf("--terraform-version=%s", terraformVersion), "terraform", "version") 147 148 if err != nil { 149 t.Errorf("error: %s", err) 150 } 151 152 if stderr != "" { 153 t.Errorf("unexpected stderr output ize terraform version: %s", err) 154 } 155 156 if !strings.Contains(stdout, fmt.Sprintf("Terraform v%s", terraformVersion)) { 157 t.Errorf("No success message detected after terraform version:\n%s", stdout) 158 } else { 159 t.Log(fmt.Sprintf("PASS: v%s: terraform version", terraformVersion)) 160 } 161 162 if os.Getenv("RUNNER_DEBUG") == "1" { 163 t.Log(stdout) 164 } 165 } 166 167 func TestIzeTerraformInit(t *testing.T) { 168 if examplesRootDir == "" { 169 t.Fatalf("Missing required environment variable IZE_EXAMPLES_PATH") 170 } 171 172 ize := NewBinary(t, izeBinary, examplesRootDir) 173 174 stdout, stderr, err := ize.RunRaw("gen", "tfenv") 175 176 if err != nil { 177 t.Errorf("error: %s", err) 178 } 179 180 if stderr != "" { 181 t.Errorf("unexpected stderr output ize gen tfenv: %s", err) 182 } 183 184 if !strings.Contains(stdout, "Generate terraform file for \"infra\" completed") { 185 t.Errorf("No success message detected after gen tfenv:\n%s", stdout) 186 } 187 188 stdout, stderr, err = ize.RunRaw("terraform", "init") 189 190 if err != nil { 191 t.Errorf("error: %s", err) 192 } 193 194 if stderr != "" { 195 t.Errorf("unexpected stderr output ize terraform init: %s", err) 196 } 197 198 if !strings.Contains(stdout, "Terraform has been successfully initialized!") { 199 t.Errorf("No success message detected after terraform init:\n%s", stdout) 200 } 201 202 if os.Getenv("RUNNER_DEBUG") == "1" { 203 t.Log(stdout) 204 } 205 }