Skip to content

Commit 434b2a5

Browse files
author
Bryan C. Mills
committed
syscall: relax output check in TestGroupCleanupUserNamespace
“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 #16224. Updates #16303. Updates #19938. Updates #34547. Updates #46752. Fixes #52088. 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>
1 parent a84ef50 commit 434b2a5

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

src/syscall/exec_linux_test.go

+9-16
Original file line numberDiff line numberDiff line change
@@ -258,12 +258,14 @@ func TestGroupCleanup(t *testing.T) {
258258
t.Fatalf("Cmd failed with err %v, output: %s", err, out)
259259
}
260260
strOut := strings.TrimSpace(string(out))
261+
t.Logf("id: %s", strOut)
262+
261263
expected := "uid=0(root) gid=0(root)"
262264
// Just check prefix because some distros reportedly output a
263265
// context parameter; see https://golang.org/issue/16224.
264266
// Alpine does not output groups; see https://golang.org/issue/19938.
265267
if !strings.HasPrefix(strOut, expected) {
266-
t.Errorf("id command output: %q, expected prefix: %q", strOut, expected)
268+
t.Errorf("expected prefix: %q", expected)
267269
}
268270
}
269271

@@ -292,23 +294,14 @@ func TestGroupCleanupUserNamespace(t *testing.T) {
292294
t.Fatalf("Cmd failed with err %v, output: %s", err, out)
293295
}
294296
strOut := strings.TrimSpace(string(out))
297+
t.Logf("id: %s", strOut)
295298

296-
// Strings we've seen in the wild.
297-
expected := []string{
298-
"uid=0(root) gid=0(root) groups=0(root)",
299-
"uid=0(root) gid=0(root) groups=0(root),65534(nobody)",
300-
"uid=0(root) gid=0(root) groups=0(root),65534(nogroup)",
301-
"uid=0(root) gid=0(root) groups=0(root),65534",
302-
"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
303-
"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
304-
"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
305-
}
306-
for _, e := range expected {
307-
if strOut == e {
308-
return
309-
}
299+
// As in TestGroupCleanup, just check prefix.
300+
// The actual groups and contexts seem to vary from one distro to the next.
301+
expected := "uid=0(root) gid=0(root) groups=0(root)"
302+
if !strings.HasPrefix(strOut, expected) {
303+
t.Errorf("expected prefix: %q", expected)
310304
}
311-
t.Errorf("id command output: %q, expected one of %q", strOut, expected)
312305
}
313306

314307
// TestUnshareHelperProcess isn't a real test. It's used as a helper process

0 commit comments

Comments
 (0)