]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: accept more variants of id output when testing as root
authorIan Lance Taylor <iant@golang.org>
Thu, 30 Jun 2016 15:22:27 +0000 (08:22 -0700)
committerIan Lance Taylor <iant@golang.org>
Thu, 30 Jun 2016 15:49:01 +0000 (15:49 +0000)
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: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/syscall/exec_linux_test.go

index fbbce6de5abdf298bbff7c13a65b0b0bcd820457..cb24c590f9115262eb2d18d525363b30c2e4e8fd 100644 (file)
@@ -200,8 +200,10 @@ func TestGroupCleanup(t *testing.T) {
        }
        strOut := strings.TrimSpace(string(out))
        expected := "uid=0(root) gid=0(root) groups=0(root)"
-       if strOut != expected {
-               t.Fatalf("id command output: %s, expected: %s", strOut, expected)
+       // Just check prefix because some distros reportedly output a
+       // 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) {
                t.Fatalf("Cmd failed with err %v, output: %s", err, out)
        }
        strOut := strings.TrimSpace(string(out))
-       // there are two possible outs
-       expected1 := "uid=0(root) gid=0(root) groups=0(root)"
-       expected2 := "uid=0(root) gid=0(root) groups=0(root),65534(nobody)"
-       if strOut != expected1 && strOut != expected2 {
-               t.Fatalf("id command output: %s, expected: %s or %s", strOut, expected1, expected2)
+
+       // Strings we've seen in the wild.
+       expected := []string{
+               "uid=0(root) gid=0(root) groups=0(root)",
+               "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)
 }