]> Cypherpunks repositories - gostls13.git/commitdiff
[release-branch.go1.17] syscall: relax output check in TestGroupCleanupUserNamespace
authorBryan C. Mills <bcmills@google.com>
Thu, 31 Mar 2022 20:51:32 +0000 (16:51 -0400)
committerDmitri Shuralyov <dmitshur@golang.org>
Wed, 4 May 2022 15:44:36 +0000 (15:44 +0000)
“If you have a procedure with ten parameters, you probably missed some.”
― attr. Alan J. Perlis

I argue that the same is true for hard-coded special cases.

In TestGroupCleanupUserNamespace, instead of a curated list of strings
observed in the wild we now check for a prefix, as was done for
TestGroupCleanup in CL 24670.

Updates #52088.
Fixes #52148.

Change-Id: I59c5b0c048113e306996c0f8247e09c714d2423a
Reviewed-on: https://go-review.googlesource.com/c/go/+/397316
Trust: Bryan Mills <bcmills@google.com>
Run-TryBot: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
(cherry picked from commit 434b2a5d0dbdfdce6327beb06ca03c02b3fd2785)
Reviewed-on: https://go-review.googlesource.com/c/go/+/398235
Reviewed-by: Ian Lance Taylor <iant@google.com>
src/syscall/exec_linux_test.go

index 85b59ad00d94650368e0305ba62b507c0b8824b0..d62b80b017e7939af02d51cd39f1f3d370adebaf 100644 (file)
@@ -275,12 +275,14 @@ func TestGroupCleanup(t *testing.T) {
                t.Fatalf("Cmd failed with err %v, output: %s", err, out)
        }
        strOut := strings.TrimSpace(string(out))
+       t.Logf("id: %s", strOut)
+
        expected := "uid=0(root) gid=0(root)"
        // Just check prefix because some distros reportedly output a
        // context parameter; see https://golang.org/issue/16224.
        // Alpine does not output groups; see https://golang.org/issue/19938.
        if !strings.HasPrefix(strOut, expected) {
-               t.Errorf("id command output: %q, expected prefix: %q", strOut, expected)
+               t.Errorf("expected prefix: %q", expected)
        }
 }
 
@@ -309,23 +311,14 @@ func TestGroupCleanupUserNamespace(t *testing.T) {
                t.Fatalf("Cmd failed with err %v, output: %s", err, out)
        }
        strOut := strings.TrimSpace(string(out))
+       t.Logf("id: %s", strOut)
 
-       // 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)",
-               "uid=0(root) gid=0(root) groups=0(root),65534",
-               "uid=0(root) gid=0(root) groups=0(root),65534(nobody),65534(nobody),65534(nobody),65534(nobody),65534(nobody),65534(nobody),65534(nobody),65534(nobody),65534(nobody),65534(nobody)", // Alpine; see https://golang.org/issue/19938
-               "uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023",                                                                               // CentOS with SELinux context, see https://golang.org/issue/34547
-               "uid=0(root) gid=0(root) groups=0(root),65534(nobody) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023",                                                                 // Fedora with SElinux context, see https://golang.org/issue/46752
-       }
-       for _, e := range expected {
-               if strOut == e {
-                       return
-               }
+       // As in TestGroupCleanup, just check prefix.
+       // The actual groups and contexts seem to vary from one distro to the next.
+       expected := "uid=0(root) gid=0(root) groups=0(root)"
+       if !strings.HasPrefix(strOut, expected) {
+               t.Errorf("expected prefix: %q", expected)
        }
-       t.Errorf("id command output: %q, expected one of %q", strOut, expected)
 }
 
 // TestUnshareHelperProcess isn't a real test. It's used as a helper process