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  }