github.com/wata727/tflint@v0.12.2-0.20191013070026-96dd0d36f385/tflint/tflint_test.go (about) 1 package tflint 2 3 import ( 4 "io/ioutil" 5 "log" 6 "os" 7 "path/filepath" 8 "runtime" 9 "testing" 10 11 "github.com/hashicorp/terraform/terraform" 12 "github.com/spf13/afero" 13 ) 14 15 func TestMain(m *testing.M) { 16 log.SetOutput(ioutil.Discard) 17 os.Exit(m.Run()) 18 } 19 20 func testRunnerWithInputVariables(t *testing.T, files map[string]string, variables ...terraform.InputValues) *Runner { 21 config := EmptyConfig() 22 fs := afero.Afero{Fs: afero.NewMemMapFs()} 23 for name, src := range files { 24 err := fs.WriteFile(name, []byte(src), os.ModePerm) 25 if err != nil { 26 t.Fatal(err) 27 } 28 } 29 30 loader, err := NewLoader(fs, config) 31 if err != nil { 32 t.Fatal(err) 33 } 34 35 cfg, err := loader.LoadConfig(".") 36 if err != nil { 37 t.Fatal(err) 38 } 39 40 runner, err := NewRunner(config, map[string]Annotations{}, cfg, variables...) 41 if err != nil { 42 t.Fatal(err) 43 } 44 45 return runner 46 } 47 48 func withEnvVars(t *testing.T, envVars map[string]string, test func()) { 49 for key, value := range envVars { 50 err := os.Setenv(key, value) 51 if err != nil { 52 t.Fatal(err) 53 } 54 } 55 defer func() { 56 for key := range envVars { 57 err := os.Unsetenv(key) 58 if err != nil { 59 t.Fatal(err) 60 } 61 } 62 }() 63 64 test() 65 } 66 67 func withinFixtureDir(t *testing.T, dir string, test func()) { 68 currentDir, err := os.Getwd() 69 if err != nil { 70 t.Fatal(err) 71 } 72 defer os.Chdir(currentDir) 73 74 err = os.Chdir(filepath.Join(currentDir, "test-fixtures", dir)) 75 if err != nil { 76 t.Fatal(err) 77 } 78 79 test() 80 } 81 82 func testRunnerWithOsFs(t *testing.T, config *Config) *Runner { 83 loader, err := NewLoader(afero.Afero{Fs: afero.NewOsFs()}, config) 84 if err != nil { 85 t.Fatal(err) 86 } 87 88 cfg, err := loader.LoadConfig(".") 89 if err != nil { 90 t.Fatal(err) 91 } 92 93 runner, err := NewRunner(config, map[string]Annotations{}, cfg, map[string]*terraform.InputValue{}) 94 if err != nil { 95 t.Fatal(err) 96 } 97 98 return runner 99 } 100 101 func testRunnerWithAnnotations(t *testing.T, files map[string]string, annotations map[string]Annotations) *Runner { 102 config := EmptyConfig() 103 fs := afero.Afero{Fs: afero.NewMemMapFs()} 104 for name, src := range files { 105 err := fs.WriteFile(name, []byte(src), os.ModePerm) 106 if err != nil { 107 t.Fatal(err) 108 } 109 } 110 111 loader, err := NewLoader(fs, config) 112 if err != nil { 113 t.Fatal(err) 114 } 115 116 cfg, err := loader.LoadConfig(".") 117 if err != nil { 118 t.Fatal(err) 119 } 120 121 runner, err := NewRunner(config, annotations, cfg, map[string]*terraform.InputValue{}) 122 if err != nil { 123 t.Fatal(err) 124 } 125 126 return runner 127 } 128 129 func moduleConfig() *Config { 130 c := EmptyConfig() 131 c.Module = true 132 return c 133 } 134 135 func newLine() string { 136 if runtime.GOOS == "windows" { 137 return "\r\n" 138 } 139 return "\n" 140 }