github.com/aca02djr/gb@v0.4.1/cmd/env_test.go (about)

     1  package cmd
     2  
     3  import "testing"
     4  
     5  func TestMergeEnv(t *testing.T) {
     6  	envTests := []struct {
     7  		env  []string
     8  		args map[string]string
     9  		want []string
    10  	}{
    11  		{
    12  			env:  nil,
    13  			args: nil,
    14  			want: nil,
    15  		},
    16  		{
    17  			env:  []string{`FOO=BAR`, `BAZ="QUXX"`},
    18  			args: nil,
    19  			want: []string{`FOO=BAR`, `BAZ="QUXX"`},
    20  		},
    21  		{
    22  			env:  []string{`FOO=BAR`, `BAZ="QUXX"`},
    23  			args: map[string]string{"BLORT": "false", "BAZ": "QUXX"},
    24  			want: []string{`FOO=BAR`, `BAZ=QUXX`, `BLORT=false`},
    25  		},
    26  	}
    27  
    28  	for _, tt := range envTests {
    29  		got := MergeEnv(tt.env, tt.args)
    30  		compare(t, tt.want, got)
    31  	}
    32  }
    33  
    34  func compare(t *testing.T, want, got []string) {
    35  	w, g := set(want), set(got)
    36  	for k := range w {
    37  		if w[k] != g[k] {
    38  			t.Errorf("want %v, got %v", k, g[k])
    39  		}
    40  	}
    41  }
    42  
    43  func set(v []string) map[string]bool {
    44  	m := make(map[string]bool)
    45  	for _, s := range v {
    46  		m[s] = true
    47  	}
    48  	return m
    49  }