]> Cypherpunks repositories - gostls13.git/commitdiff
os: look up hostname from PATH in test
authorSilke Hofstra <silke@slxh.eu>
Wed, 20 Apr 2022 15:02:35 +0000 (15:02 +0000)
committerGopher Robot <gobot@golang.org>
Wed, 18 May 2022 15:19:51 +0000 (15:19 +0000)
When running TestHostname, the location of the hostname binary
is hardcoded as /bin/hostname. However, on some systems the actual
location is /usr/bin/hostname.

Change this behaviour to perform a lookup for hostname in PATH,
and skip the test when it cannot be found there.

Fixes #52402

Change-Id: I5418bf77258f5ffb2a9f834b8c68d8a7b7a452d7
GitHub-Last-Rev: 750f36fcf9d4b26b75e91b895d6f7c6a275536ee
GitHub-Pull-Request: golang/go#52403
Reviewed-on: https://go-review.googlesource.com/c/go/+/400794
Run-TryBot: Ian Lance Taylor <iant@google.com>
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@google.com>
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
Auto-Submit: Ian Lance Taylor <iant@google.com>

src/os/os_test.go

index 8e2b4f3aaa82626e9242d6b4b6dacbd30246d6fe..ea935d32958aba47f60015b0a684a614a4ed4086 100644 (file)
@@ -1699,16 +1699,21 @@ func runBinHostname(t *testing.T) string {
                t.Fatal(err)
        }
        defer r.Close()
-       const path = "/bin/hostname"
+
+       path, err := osexec.LookPath("hostname")
+       if err != nil {
+               if errors.Is(err, osexec.ErrNotFound) {
+                       t.Skip("skipping test; test requires hostname but it does not exist")
+               }
+               t.Fatal(err)
+       }
+
        argv := []string{"hostname"}
        if runtime.GOOS == "aix" {
                argv = []string{"hostname", "-s"}
        }
        p, err := StartProcess(path, argv, &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()