github.com/gsquire/gb@v0.4.4-0.20161112235727-3982dc872064/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 }