github.com/cilki/sh@v2.6.4+incompatible/expand/expand_test.go (about) 1 // Copyright (c) 2018, Daniel Martà <mvdan@mvdan.cc> 2 // See LICENSE for licensing information 3 4 package expand 5 6 import ( 7 "os" 8 "strings" 9 "testing" 10 11 "mvdan.cc/sh/syntax" 12 ) 13 14 func parseWord(t *testing.T, src string) *syntax.Word { 15 t.Helper() 16 p := syntax.NewParser() 17 word, err := p.Document(strings.NewReader(src)) 18 if err != nil { 19 t.Fatal(err) 20 } 21 return word 22 } 23 24 func TestConfigNils(t *testing.T) { 25 os.Setenv("EXPAND_GLOBAL", "value") 26 tests := []struct { 27 name string 28 cfg *Config 29 src string 30 want string 31 }{ 32 { 33 "NilConfig", 34 nil, 35 "$EXPAND_GLOBAL", 36 "", 37 }, 38 { 39 "ZeroConfig", 40 &Config{}, 41 "$EXPAND_GLOBAL", 42 "", 43 }, 44 { 45 "EnvConfig", 46 &Config{Env: ListEnviron(os.Environ()...)}, 47 "$EXPAND_GLOBAL", 48 "value", 49 }, 50 } 51 for _, tc := range tests { 52 t.Run(tc.name, func(t *testing.T) { 53 word := parseWord(t, tc.src) 54 got, err := Literal(tc.cfg, word) 55 if err != nil { 56 t.Fatalf("did not want error, got %v", err) 57 } 58 if got != tc.want { 59 t.Fatalf("wanted %q, got %q", tc.want, got) 60 } 61 }) 62 } 63 }