| // Copyright 2013 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris |
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris |
| |
| package os_test |
| |
| import ( |
| "fmt" |
| . "os" |
| "testing" |
| ) |
| |
| var setenvEinvalTests = []struct { |
| k, v string |
| }{ |
| {"", ""}, // empty key |
| {"k=v", ""}, // '=' in key |
| {"\x00", ""}, // '\x00' in key |
| {"k", "\x00"}, // '\x00' in value |
| } |
| |
| func TestSetenvUnixEinval(t *testing.T) { |
| for _, tt := range setenvEinvalTests { |
| err := Setenv(tt.k, tt.v) |
| if err == nil { |
| t.Errorf(`Setenv(%q, %q) == nil, want error`, tt.k, tt.v) |
| } |
| } |
| } |
| |
| var shellSpecialVarTests = []struct { |
| k, v string |
| }{ |
| {"*", "asterisk"}, |
| {"#", "pound"}, |
| {"$", "dollar"}, |
| {"@", "at"}, |
| {"!", "exclamation mark"}, |
| {"?", "question mark"}, |
| {"-", "dash"}, |
| } |
| |
| func TestExpandEnvShellSpecialVar(t *testing.T) { |
| for _, tt := range shellSpecialVarTests { |
| Setenv(tt.k, tt.v) |
| defer Unsetenv(tt.k) |
| |
| argRaw := fmt.Sprintf("$%s", tt.k) |
| argWithBrace := fmt.Sprintf("${%s}", tt.k) |
| if gotRaw, gotBrace := ExpandEnv(argRaw), ExpandEnv(argWithBrace); gotRaw != gotBrace { |
| t.Errorf("ExpandEnv(%q) = %q, ExpandEnv(%q) = %q; expect them to be equal", argRaw, gotRaw, argWithBrace, gotBrace) |
| } |
| } |
| } |