]> Cypherpunks repositories - gostls13.git/commitdiff
os: in test, allow Hostname to return FQDN even if /bin/hostname does not
authorIcarus Sparry <golang@icarus.freeuk.com>
Tue, 26 Jan 2010 21:16:03 +0000 (13:16 -0800)
committerRuss Cox <rsc@golang.org>
Tue, 26 Jan 2010 21:16:03 +0000 (13:16 -0800)
Hostname reads the file /proc/sys/kernel/hostname to determine
the value it returns. Some people set this to a Fully Qualified
Doamin Name. At least one implementation of /bin/hostname
truncates the name it gets (often from the "uname" system call)
at the first dot unless it is given a "-f" flag. This change makes
the unit test also truncate at the first dot and checks if the strings
then match. This seems more portable than adding an extra flag
to the called /bin/hostname program.

R=rsc
CC=golang-dev
https://golang.org/cl/181097

src/pkg/os/os_test.go

index 4523cad79dd183a4e60d997e7e3d922df896afec..4a84c4f18d7f0598280e597d71813d50f578d8ce 100644 (file)
@@ -647,13 +647,18 @@ func run(t *testing.T, cmd []string) string {
 
 func TestHostname(t *testing.T) {
        // Check internal Hostname() against the output of /bin/hostname.
+       // Allow that the internal Hostname returns a Fully Qualified Domain Name
+       // and the /bin/hostname only returns the first component
        hostname, err := Hostname()
        if err != nil {
                t.Fatalf("%v", err)
        }
        want := run(t, []string{"/bin/hostname"})
        if hostname != want {
-               t.Errorf("Hostname() = %q, want %q", hostname, want)
+               i := strings.Index(hostname, ".")
+               if i < 0 || hostname[0:i] != want {
+                       t.Errorf("Hostname() = %q, want %q", hostname, want)
+               }
        }
 }