From 40e60e7c13d53f63d323c0a2fe380dd3eb24bf3c Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Mon, 7 Mar 2016 22:11:48 +0000 Subject: [PATCH] os, syscall: skip tests when environment doesn't permit testing Fixes #14693 Change-Id: Id0a6a80b4c37c0b0f1c2755667b7233ed8964e40 Reviewed-on: https://go-review.googlesource.com/20342 Reviewed-by: Ian Lance Taylor Run-TryBot: Ian Lance Taylor TryBot-Result: Gobot Gobot --- src/os/os_test.go | 12 ++++++++---- src/syscall/exec_linux_test.go | 3 +++ 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/os/os_test.go b/src/os/os_test.go index b2f45b48f8..a878e40fd2 100644 --- a/src/os/os_test.go +++ b/src/os/os_test.go @@ -1275,15 +1275,19 @@ func TestOpenNoName(t *testing.T) { } } -func run(t *testing.T, cmd []string) string { +func runBinHostname(t *testing.T) string { // Run /bin/hostname and collect output. r, w, err := Pipe() if err != nil { t.Fatal(err) } defer r.Close() - p, err := StartProcess("/bin/hostname", []string{"hostname"}, &ProcAttr{Files: []*File{nil, w, Stderr}}) + const path = "/bin/hostname" + p, err := StartProcess(path, []string{"hostname"}, &ProcAttr{Files: []*File{nil, w, Stderr}}) if err != nil { + if _, err := Stat(path); IsNotExist(err) { + t.Skipf("skipping test; test requires %s but it does not exist", path) + } t.Fatal(err) } w.Close() @@ -1303,7 +1307,7 @@ func run(t *testing.T, cmd []string) string { output = output[0 : n-1] } if output == "" { - t.Fatalf("%v produced no output", cmd) + t.Fatalf("/bin/hostname produced no output") } return output @@ -1345,7 +1349,7 @@ func TestHostname(t *testing.T) { if err != nil { t.Fatalf("%v", err) } - want := run(t, []string{"/bin/hostname"}) + want := runBinHostname(t) if hostname != want { i := strings.Index(hostname, ".") if i < 0 || hostname[0:i] != want { diff --git a/src/syscall/exec_linux_test.go b/src/syscall/exec_linux_test.go index 6d31941184..eb32cfd4b1 100644 --- a/src/syscall/exec_linux_test.go +++ b/src/syscall/exec_linux_test.go @@ -31,6 +31,9 @@ func whoamiCmd(t *testing.T, uid, gid int, setgroups bool) *exec.Cmd { if os.IsNotExist(err) { t.Skip("kernel doesn't support user namespaces") } + if os.IsPermission(err) { + t.Skip("unable to test user namespaces due to permissions") + } t.Fatalf("Failed to stat /proc/self/ns/user: %v", err) } if isChrooted(t) { -- 2.48.1