os: add LookupEnv, like Getenv but reports presence

Fixes #9676.

Change-Id: I32fe474cdfa09aff91daa4b10ac4df28ffdaa649
Reviewed-on: https://go-review.googlesource.com/9741
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
Rob Pike 2015-05-05 11:17:08 -07:00
parent 97fd7b07b6
commit e8c0d0f2f3
2 changed files with 21 additions and 0 deletions

View File

@ -81,6 +81,15 @@ func Getenv(key string) string {
return v
}
// LookupEnv retrieves the value of the environment variable named
// by the key. If the variable is present in the environment the
// value (which may be empty) is returned and the boolean is true.
// Otherwise the returned value will be empty and the boolean will
// be false.
func LookupEnv(key string) (string, bool) {
return syscall.Getenv(key)
}
// Setenv sets the value of the environment variable named by the key.
// It returns an error, if any.
func Setenv(key, value string) error {

View File

@ -94,3 +94,15 @@ func TestUnsetenv(t *testing.T) {
t.Fatal("Unsetenv didn't clear TestUnsetenv")
}
}
func TestLookupEnv(t *testing.T) {
value, ok := LookupEnv("GOROOT") // Should be set.
if !ok {
t.Errorf("GOROOT is not set")
}
const v = "Variable That Does Not Exist"
value, ok = LookupEnv(v) // Should not be set.
if ok || value != "" {
t.Errorf("%s is set: %q", v, value)
}
}