Commit 6c136493 authored by Ian Lance Taylor's avatar Ian Lance Taylor

syscall: accept more variants of id output when testing as root

This should fix the report at #16224, and also fixes running the test as
root on my Ubuntu Trusty system.

Fixes #16224.

Change-Id: I4e3b5527aa63366afb33a7e30efab088d34fb302
Reviewed-on: https://go-review.googlesource.com/24670
Run-TryBot: Ian Lance Taylor <iant@golang.org>
Reviewed-by: 's avatarBrad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent e0c8af09
...@@ -200,8 +200,10 @@ func TestGroupCleanup(t *testing.T) { ...@@ -200,8 +200,10 @@ func TestGroupCleanup(t *testing.T) {
} }
strOut := strings.TrimSpace(string(out)) strOut := strings.TrimSpace(string(out))
expected := "uid=0(root) gid=0(root) groups=0(root)" expected := "uid=0(root) gid=0(root) groups=0(root)"
if strOut != expected { // Just check prefix because some distros reportedly output a
t.Fatalf("id command output: %s, expected: %s", strOut, expected) // context parameter; see https://golang.org/issue/16224.
if !strings.HasPrefix(strOut, expected) {
t.Errorf("id command output: %q, expected prefix: %q", strOut, expected)
} }
} }
...@@ -230,10 +232,17 @@ func TestGroupCleanupUserNamespace(t *testing.T) { ...@@ -230,10 +232,17 @@ func TestGroupCleanupUserNamespace(t *testing.T) {
t.Fatalf("Cmd failed with err %v, output: %s", err, out) t.Fatalf("Cmd failed with err %v, output: %s", err, out)
} }
strOut := strings.TrimSpace(string(out)) strOut := strings.TrimSpace(string(out))
// there are two possible outs
expected1 := "uid=0(root) gid=0(root) groups=0(root)" // Strings we've seen in the wild.
expected2 := "uid=0(root) gid=0(root) groups=0(root),65534(nobody)" expected := []string{
if strOut != expected1 && strOut != expected2 { "uid=0(root) gid=0(root) groups=0(root)",
t.Fatalf("id command output: %s, expected: %s or %s", strOut, expected1, expected2) "uid=0(root) gid=0(root) groups=0(root),65534(nobody)",
"uid=0(root) gid=0(root) groups=0(root),65534(nogroup)",
}
for _, e := range expected {
if strOut == e {
return
}
} }
t.Errorf("id command output: %q, expected one of %q", strOut, expected)
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment