github.com/jpreese/tflint@v0.19.2-0.20200908152133-b01686250fb6/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 f, err := loader.Files() 40 if err != nil { 41 t.Fatal(err) 42 } 43 44 runner, err := NewRunner(config, f, map[string]Annotations{}, cfg, variables...) 45 if err != nil { 46 t.Fatal(err) 47 } 48 49 return runner 50 } 51 52 func withEnvVars(t *testing.T, envVars map[string]string, test func()) { 53 for key, value := range envVars { 54 err := os.Setenv(key, value) 55 if err != nil { 56 t.Fatal(err) 57 } 58 } 59 defer func() { 60 for key := range envVars { 61 err := os.Unsetenv(key) 62 if err != nil { 63 t.Fatal(err) 64 } 65 } 66 }() 67 68 test() 69 } 70 71 func withinFixtureDir(t *testing.T, dir string, test func()) { 72 currentDir, err := os.Getwd() 73 if err != nil { 74 t.Fatal(err) 75 } 76 defer os.Chdir(currentDir) 77 78 err = os.Chdir(filepath.Join(currentDir, "test-fixtures", dir)) 79 if err != nil { 80 t.Fatal(err) 81 } 82 83 test() 84 } 85 86 func testRunnerWithOsFs(t *testing.T, config *Config) *Runner { 87 loader, err := NewLoader(afero.Afero{Fs: afero.NewOsFs()}, config) 88 if err != nil { 89 t.Fatal(err) 90 } 91 92 cfg, err := loader.LoadConfig(".") 93 if err != nil { 94 t.Fatal(err) 95 } 96 f, err := loader.Files() 97 if err != nil { 98 t.Fatal(err) 99 } 100 101 runner, err := NewRunner(config, f, map[string]Annotations{}, cfg, map[string]*terraform.InputValue{}) 102 if err != nil { 103 t.Fatal(err) 104 } 105 106 return runner 107 } 108 109 func testRunnerWithAnnotations(t *testing.T, files map[string]string, annotations map[string]Annotations) *Runner { 110 config := EmptyConfig() 111 fs := afero.Afero{Fs: afero.NewMemMapFs()} 112 for name, src := range files { 113 err := fs.WriteFile(name, []byte(src), os.ModePerm) 114 if err != nil { 115 t.Fatal(err) 116 } 117 } 118 119 loader, err := NewLoader(fs, config) 120 if err != nil { 121 t.Fatal(err) 122 } 123 124 cfg, err := loader.LoadConfig(".") 125 if err != nil { 126 t.Fatal(err) 127 } 128 129 f, err := loader.Files() 130 if err != nil { 131 t.Fatal(err) 132 } 133 134 runner, err := NewRunner(config, f, annotations, cfg, map[string]*terraform.InputValue{}) 135 if err != nil { 136 t.Fatal(err) 137 } 138 139 return runner 140 } 141 142 func moduleConfig() *Config { 143 c := EmptyConfig() 144 c.Module = true 145 return c 146 } 147 148 func newLine() string { 149 if runtime.GOOS == "windows" { 150 return "\r\n" 151 } 152 return "\n" 153 }