github.com/terraform-linters/tflint-ruleset-azurerm@v0.26.0/integration/integration_test.go (about) 1 package integration 2 3 import ( 4 "bytes" 5 "encoding/json" 6 "io/ioutil" 7 "os" 8 "os/exec" 9 "testing" 10 11 "github.com/google/go-cmp/cmp" 12 ) 13 14 func TestIntegration(t *testing.T) { 15 cases := []struct { 16 Name string 17 Command *exec.Cmd 18 Dir string 19 }{ 20 { 21 Name: "basic", 22 Command: exec.Command("tflint", "--format", "json", "--force"), 23 Dir: "basic", 24 }, 25 { 26 Name: "tags", 27 Command: exec.Command("tflint", "--format", "json", "--force"), 28 Dir: "tags", 29 }, 30 } 31 32 dir, _ := os.Getwd() 33 defer os.Chdir(dir) 34 35 for _, tc := range cases { 36 testDir := dir + "/" + tc.Dir 37 os.Chdir(testDir) 38 39 var stdout, stderr bytes.Buffer 40 tc.Command.Stdout = &stdout 41 tc.Command.Stderr = &stderr 42 if err := tc.Command.Run(); err != nil { 43 t.Fatalf("Failed `%s`: %s, stdout=%s stderr=%s", tc.Name, err, stdout.String(), stderr.String()) 44 } 45 46 ret, err := ioutil.ReadFile("result.json") 47 if err != nil { 48 t.Fatalf("Failed `%s`: %s", tc.Name, err) 49 } 50 51 var expected interface{} 52 if err := json.Unmarshal(ret, &expected); err != nil { 53 t.Fatalf("Failed `%s`: %s", tc.Name, err) 54 } 55 56 var got interface{} 57 if err := json.Unmarshal(stdout.Bytes(), &got); err != nil { 58 t.Fatalf("Failed `%s`: %s", tc.Name, err) 59 } 60 61 if !cmp.Equal(got, expected) { 62 t.Fatalf("Failed `%s`: diff=%s", tc.Name, cmp.Diff(expected, got)) 63 } 64 } 65 }