summaryrefslogtreecommitdiff
path: root/src/os
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@golang.org>2014-10-01 11:17:15 -0700
committerBrad Fitzpatrick <bradfitz@golang.org>2014-10-01 11:17:15 -0700
commit52a0a3f43171c79c11a7c024c757e9b084d2bbed (patch)
tree911ebc3a34973aa9d2b0ccb42bb0b787147d273c /src/os
parent00f7bc64366c3b39ca947e489c8208ff4f0e3aa3 (diff)
downloadgo-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.go5
-rw-r--r--src/os/env_test.go26
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")
+ }
+}