1
0
mirror of https://github.com/golang/go synced 2024-11-18 10:04:43 -07:00

os/user: fake Current on Android

On Android devices where the stub fallback for Current fails to
extract a User from the environment, return a dummy fallback instead
of failing.

While we're here, use / instead of /home/nacl for the NaCL fallback.

Hopefully fixes the Android builder.

Change-Id: Ia29304fbc224ee5f9c0f4e706d1756f765a7eae5
Reviewed-on: https://go-review.googlesource.com/37960
Run-TryBot: Elias Naur <elias.naur@gmail.com>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Elias Naur 2017-03-08 21:56:57 +01:00
parent 29edf0f9fe
commit 228438e097
2 changed files with 14 additions and 5 deletions

View File

@ -26,7 +26,9 @@ func current() (*User, error) {
Name: "", // ignored
HomeDir: os.Getenv("HOME"),
}
if runtime.GOOS == "nacl" {
// On NaCL and Android, return a dummy user instead of failing.
switch runtime.GOOS {
case "nacl":
if u.Uid == "" {
u.Uid = "1"
}
@ -34,7 +36,17 @@ func current() (*User, error) {
u.Username = "nacl"
}
if u.HomeDir == "" {
u.HomeDir = "/home/nacl"
u.HomeDir = "/"
}
case "android":
if u.Uid == "" {
u.Uid = "1"
}
if u.Username == "" {
u.Username = "android"
}
if u.HomeDir == "" {
u.HomeDir = "/sdcard"
}
}
// cgo isn't available, but if we found the minimum information

View File

@ -16,9 +16,6 @@ func checkUser(t *testing.T) {
}
func TestCurrent(t *testing.T) {
if runtime.GOOS == "android" {
t.Skipf("skipping on %s", runtime.GOOS)
}
u, err := Current()
if err != nil {
t.Fatalf("Current: %v (got %#v)", err, u)