diff options
author | Brad Fitzpatrick <bradfitz@golang.org> | 2014-10-01 11:17:15 -0700 |
---|---|---|
committer | Brad Fitzpatrick <bradfitz@golang.org> | 2014-10-01 11:17:15 -0700 |
commit | 52a0a3f43171c79c11a7c024c757e9b084d2bbed (patch) | |
tree | 911ebc3a34973aa9d2b0ccb42bb0b787147d273c /src/os | |
parent | 00f7bc64366c3b39ca947e489c8208ff4f0e3aa3 (diff) | |
download | go-52a0a3f43171c79c11a7c024c757e9b084d2bbed.tar.gz |
os, syscall: add Unsetenv
Also address a TODO, making Clearenv pass through to cgo.
Based largely on Minux's earlier https://codereview.appspot.com/82040044
Fixes Issue 6423
LGTM=iant, alex.brainman, r, rsc
R=rsc, iant, r, alex.brainman
CC=golang-codereviews
https://codereview.appspot.com/148370043
Diffstat (limited to 'src/os')
-rw-r--r-- | src/os/env.go | 5 | ||||
-rw-r--r-- | src/os/env_test.go | 26 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/os/env.go b/src/os/env.go index db7fc72b8..d0494a476 100644 --- a/src/os/env.go +++ b/src/os/env.go @@ -91,6 +91,11 @@ func Setenv(key, value string) error { return nil } +// Unsetenv unsets a single environment variable. +func Unsetenv(key string) error { + return syscall.Unsetenv(key) +} + // Clearenv deletes all environment variables. func Clearenv() { syscall.Clearenv() diff --git a/src/os/env_test.go b/src/os/env_test.go index 991fa4d05..e61806751 100644 --- a/src/os/env_test.go +++ b/src/os/env_test.go @@ -7,6 +7,7 @@ package os_test import ( . "os" "reflect" + "strings" "testing" ) @@ -68,3 +69,28 @@ func TestConsistentEnviron(t *testing.T) { } } } + +func TestUnsetenv(t *testing.T) { + const testKey = "GO_TEST_UNSETENV" + set := func() bool { + prefix := testKey + "=" + for _, key := range Environ() { + if strings.HasPrefix(key, prefix) { + return true + } + } + return false + } + if err := Setenv(testKey, "1"); err != nil { + t.Fatalf("Setenv: %v", err) + } + if !set() { + t.Error("Setenv didn't set TestUnsetenv") + } + if err := Unsetenv(testKey); err != nil { + t.Fatalf("Unsetenv: %v", err) + } + if set() { + t.Fatal("Unsetenv didn't clear TestUnsetenv") + } +} |