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  }