github.com/terraform-linters/tflint@v0.51.2-0.20240520175844-3750771571b6/terraform/meta_test.go (about) 1 package terraform 2 3 import ( 4 "os" 5 "path/filepath" 6 "testing" 7 ) 8 9 func TestWorkspace(t *testing.T) { 10 currentDir, err := os.Getwd() 11 if err != nil { 12 t.Fatal(err) 13 } 14 15 tests := []struct { 16 name string 17 dir string 18 env map[string]string 19 want string 20 }{ 21 { 22 name: "default", 23 want: "default", 24 }, 25 { 26 name: "TF_WORKSPACE", 27 env: map[string]string{"TF_WORKSPACE": "dev"}, 28 want: "dev", 29 }, 30 { 31 name: "env file", 32 dir: filepath.Join(currentDir, "test-fixtures", "workspace"), 33 want: "staging", 34 }, 35 { 36 name: "TF_DATA_DIR", 37 dir: filepath.Join(currentDir, "test-fixtures", "workspace"), 38 env: map[string]string{"TF_DATA_DIR": ".terraform_production"}, 39 want: "production", 40 }, 41 } 42 43 for _, test := range tests { 44 t.Run(test.name, func(t *testing.T) { 45 if test.dir != "" { 46 if err := os.Chdir(test.dir); err != nil { 47 t.Fatal(err) 48 } 49 defer func() { 50 if err := os.Chdir(currentDir); err != nil { 51 t.Fatal(err) 52 } 53 }() 54 } 55 56 for k, v := range test.env { 57 t.Setenv(k, v) 58 } 59 60 got := Workspace() 61 if test.want != got { 62 t.Errorf("want: %s, got: %s", test.want, got) 63 } 64 }) 65 } 66 }