kubeform.dev/terraform-backend-sdk@v0.0.0-20220310143633-45f07fe731c5/configs/configload/testing.go (about) 1 package configload 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 ) 8 9 // NewLoaderForTests is a variant of NewLoader that is intended to be more 10 // convenient for unit tests. 11 // 12 // The loader's modules directory is a separate temporary directory created 13 // for each call. Along with the created loader, this function returns a 14 // cleanup function that should be called before the test completes in order 15 // to remove that temporary directory. 16 // 17 // In the case of any errors, t.Fatal (or similar) will be called to halt 18 // execution of the test, so the calling test does not need to handle errors 19 // itself. 20 func NewLoaderForTests(t *testing.T) (*Loader, func()) { 21 t.Helper() 22 23 modulesDir, err := ioutil.TempDir("", "tf-configs") 24 if err != nil { 25 t.Fatalf("failed to create temporary modules dir: %s", err) 26 return nil, func() {} 27 } 28 29 cleanup := func() { 30 os.RemoveAll(modulesDir) 31 } 32 33 loader, err := NewLoader(&Config{ 34 ModulesDir: modulesDir, 35 }) 36 if err != nil { 37 cleanup() 38 t.Fatalf("failed to create config loader: %s", err) 39 return nil, func() {} 40 } 41 42 return loader, cleanup 43 }