github.com/best4tires/kit@v1.0.5/env/env_test.go (about) 1 package env 2 3 import ( 4 "fmt" 5 "os" 6 "path/filepath" 7 "testing" 8 ) 9 10 func TestEnvExpand(t *testing.T) { 11 tests := []struct { 12 in []Var 13 probe map[string]string 14 }{ 15 { 16 in: []Var{ 17 MkVar("s", "b"), 18 MkVar("c", "d"), 19 }, 20 probe: map[string]string{ 21 "s": "b", 22 "c": "d", 23 }, 24 }, 25 { 26 in: []Var{ 27 MkVar("esc", "foo\\bar"), 28 MkVar("glob", "glob.attr"), 29 MkVar("p1", "{glob}_v1"), 30 MkVar("p2", "v2_{glob}"), 31 MkVar("p3", "v3_{glob}_v4"), 32 MkVar("pesc", "p_{esc}_s"), 33 }, 34 probe: map[string]string{ 35 "p1": "glob.attr_v1", 36 "p2": "v2_glob.attr", 37 "p3": "v3_glob.attr_v4", 38 "pesc": "p_foo\\bar_s", 39 }, 40 }, 41 } 42 43 for i, test := range tests { 44 t.Run(fmt.Sprintf("test_%02d", i), func(t *testing.T) { 45 env := Load(test.in...) 46 for k, v := range test.probe { 47 res, ok := env.String(k) 48 if !ok { 49 t.Fatalf("expect key %q present, but it is not", k) 50 } 51 if res != v { 52 t.Fatalf("value for %q: want %q, have %q", k, v, res) 53 } 54 } 55 }) 56 } 57 } 58 59 func TestEnvFilesExpand(t *testing.T) { 60 wd, err := os.Getwd() 61 if err != nil { 62 t.Fatalf("getwd: %v", err) 63 } 64 wd, err = filepath.Abs(wd) 65 if err != nil { 66 t.Fatalf("abs: %v", err) 67 } 68 defer os.Chdir(wd) 69 os.Chdir(filepath.Join(wd, "test_files", "sub_1", "sub_2")) 70 71 tests := []struct { 72 in []Var 73 probe map[string]string 74 }{ 75 { 76 in: []Var{ 77 MkVar("s", "b"), 78 MkVar("c", "d"), 79 }, 80 probe: map[string]string{ 81 "s": "b", 82 "c": "d", 83 }, 84 }, 85 { 86 in: []Var{ 87 MkVar("esc", "foo\\bar"), 88 MkVar("glob", "glob.attr"), 89 MkVar("p1", "{glob}_v1"), 90 MkVar("p2", "v2_{glob}"), 91 MkVar("p3", "v3_{glob}_v4"), 92 MkVar("pesc", "p_{esc}_s"), 93 }, 94 probe: map[string]string{ 95 "p1": "glob.attr_v1", 96 "p2": "v2_glob.attr", 97 "p3": "v3_glob.attr_v4", 98 "pesc": "p_foo\\bar_s", 99 "global_dsn": "user\\domain@foo.bar", 100 "loc_dsn": "dsn=user\\domain@foo.bar/local", 101 }, 102 }, 103 } 104 105 for i, test := range tests { 106 t.Run(fmt.Sprintf("test_%02d", i), func(t *testing.T) { 107 env := Load(test.in...) 108 for k, v := range test.probe { 109 res, ok := env.String(k) 110 if !ok { 111 t.Fatalf("expect key %q present, but it is not", k) 112 } 113 if res != v { 114 t.Fatalf("value for %q: want %q, have %q", k, v, res) 115 } 116 } 117 }) 118 } 119 }