os: implement and smoketest os.Unsetenv

This commit is contained in:
Dan Kegel
2021-12-11 09:55:21 -08:00
committed by Ron Evans
parent cff4493ca0
commit e4f2b9c003
5 changed files with 64 additions and 2 deletions
+6 -2
View File
@@ -17,8 +17,12 @@ func Setenv(key, value string) error {
return nil
}
func Unsetenv(_ string) error {
return ErrNotImplemented
func Unsetenv(key string) error {
err := syscall.Unsetenv(key)
if err != nil {
return NewSyscallError("unsetenv", err)
}
return nil
}
func LookupEnv(key string) (string, bool) {
+26
View File
@@ -7,6 +7,7 @@ package os_test
import (
. "os"
"reflect"
"strings"
"testing"
)
@@ -20,6 +21,31 @@ 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")
}
}
func TestLookupEnv(t *testing.T) {
const smallpox = "SMALLPOX" // No one has smallpox.
value, ok := LookupEnv(smallpox) // Should not exist.