]> Cypherpunks repositories - gostls13.git/commitdiff
os, syscall: skip tests when environment doesn't permit testing
authorBrad Fitzpatrick <bradfitz@golang.org>
Mon, 7 Mar 2016 22:11:48 +0000 (22:11 +0000)
committerBrad Fitzpatrick <bradfitz@golang.org>
Mon, 7 Mar 2016 22:40:50 +0000 (22:40 +0000)
Fixes #14693

Change-Id: Id0a6a80b4c37c0b0f1c2755667b7233ed8964e40
Reviewed-on: https://go-review.googlesource.com/20342
Reviewed-by: Ian Lance Taylor <iant@golang.org>
Run-TryBot: Ian Lance Taylor <iant@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/os/os_test.go
src/syscall/exec_linux_test.go

index b2f45b48f8dce7991207422d4b81cd4f97dfcdf0..a878e40fd2b1d9ac42e94ccbe7ac7e43b3168a1b 100644 (file)
@@ -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 {
index 6d319411840f5efd5076d33da87c562e6d92d5aa..eb32cfd4b1e46c7299781c64c39afdd66df102b0 100644 (file)
@@ -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) {