os: implement and smoketest os.Clearenv
Этот коммит содержится в:
родитель
e4f2b9c003
коммит
51fc78c100
4 изменённых файлов: 49 добавлений и 0 удалений
|
@ -25,6 +25,11 @@ func Unsetenv(key string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
// Clearenv deletes all environment variables.
|
||||
func Clearenv() {
|
||||
syscall.Clearenv()
|
||||
}
|
||||
|
||||
func LookupEnv(key string) (string, bool) {
|
||||
return syscall.Getenv(key)
|
||||
}
|
||||
|
|
|
@ -46,6 +46,34 @@ func TestUnsetenv(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
func TestClearenv(t *testing.T) {
|
||||
const testKey = "GO_TEST_CLEARENV"
|
||||
const testValue = "1"
|
||||
|
||||
// reset env
|
||||
defer func(origEnv []string) {
|
||||
for _, pair := range origEnv {
|
||||
// Environment variables on Windows can begin with =
|
||||
// https://blogs.msdn.com/b/oldnewthing/archive/2010/05/06/10008132.aspx
|
||||
i := strings.Index(pair[1:], "=") + 1
|
||||
if err := Setenv(pair[:i], pair[i+1:]); err != nil {
|
||||
t.Errorf("Setenv(%q, %q) failed during reset: %v", pair[:i], pair[i+1:], err)
|
||||
}
|
||||
}
|
||||
}(Environ())
|
||||
|
||||
if err := Setenv(testKey, testValue); err != nil {
|
||||
t.Fatalf("Setenv(%q, %q) failed: %v", testKey, testValue, err)
|
||||
}
|
||||
if _, ok := LookupEnv(testKey); !ok {
|
||||
t.Errorf("Setenv(%q, %q) didn't set $%s", testKey, testValue, testKey)
|
||||
}
|
||||
Clearenv()
|
||||
if val, ok := LookupEnv(testKey); ok {
|
||||
t.Errorf("Clearenv() didn't clear $%s, remained with value %q", testKey, val)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLookupEnv(t *testing.T) {
|
||||
const smallpox = "SMALLPOX" // No one has smallpox.
|
||||
value, ok := LookupEnv(smallpox) // Should not exist.
|
||||
|
|
|
@ -151,6 +151,17 @@ func Unsetenv(key string) (err error) {
|
|||
return
|
||||
}
|
||||
|
||||
func Clearenv() {
|
||||
for _, s := range Environ() {
|
||||
for j := 0; j < len(s); j++ {
|
||||
if s[j] == '=' {
|
||||
Unsetenv(s[0:j])
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func Mmap(fd int, offset int64, length int, prot int, flags int) (data []byte, err error) {
|
||||
addr := libc_mmap(nil, uintptr(length), int32(prot), int32(flags), int32(fd), uintptr(offset))
|
||||
if addr == unsafe.Pointer(^uintptr(0)) {
|
||||
|
|
|
@ -77,6 +77,11 @@ func Unsetenv(key string) (err error) {
|
|||
return ENOSYS
|
||||
}
|
||||
|
||||
func Clearenv() (err error) {
|
||||
// stub for now
|
||||
return ENOSYS
|
||||
}
|
||||
|
||||
func Environ() []string {
|
||||
env := runtime_envs()
|
||||
envCopy := make([]string, len(env))
|
||||
|
|
Загрузка…
Создание таблицы
Сослаться в новой задаче