| | |
| | |
| | |
| |
|
| | package exec |
| |
|
| | import ( |
| | "slices" |
| | "testing" |
| | ) |
| |
|
| | func TestDedupEnv(t *testing.T) { |
| | t.Parallel() |
| |
|
| | tests := []struct { |
| | noCase bool |
| | nulOK bool |
| | in []string |
| | want []string |
| | wantErr bool |
| | }{ |
| | { |
| | noCase: true, |
| | in: []string{"k1=v1", "k2=v2", "K1=v3"}, |
| | want: []string{"k2=v2", "K1=v3"}, |
| | }, |
| | { |
| | noCase: false, |
| | in: []string{"k1=v1", "K1=V2", "k1=v3"}, |
| | want: []string{"K1=V2", "k1=v3"}, |
| | }, |
| | { |
| | in: []string{"=a", "=b", "foo", "bar"}, |
| | want: []string{"=b", "foo", "bar"}, |
| | }, |
| | { |
| | |
| | noCase: true, |
| | in: []string{`=C:=C:\golang`, `=D:=D:\tmp`, `=D:=D:\`}, |
| | want: []string{`=C:=C:\golang`, `=D:=D:\`}, |
| | }, |
| | { |
| | |
| | |
| | in: []string{"dodgy", "entries"}, |
| | want: []string{"dodgy", "entries"}, |
| | }, |
| | { |
| | |
| | in: []string{"A=a\x00b", "B=b", "C\x00C=c"}, |
| | want: []string{"B=b"}, |
| | wantErr: true, |
| | }, |
| | { |
| | |
| | nulOK: true, |
| | in: []string{"path=one\x00two"}, |
| | want: []string{"path=one\x00two"}, |
| | }, |
| | } |
| | for _, tt := range tests { |
| | got, err := dedupEnvCase(tt.noCase, tt.nulOK, tt.in) |
| | if !slices.Equal(got, tt.want) || (err != nil) != tt.wantErr { |
| | t.Errorf("Dedup(%v, %q) = %q, %v; want %q, error:%v", tt.noCase, tt.in, got, err, tt.want, tt.wantErr) |
| | } |
| | } |
| | } |
| |
|