github.com/roboticscm/goman@v0.0.0-20210203095141-87c07b4a0a55/src/net/hosts_test.go (about) 1 // Copyright 2009 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package net 6 7 import ( 8 "sort" 9 "testing" 10 ) 11 12 type hostTest struct { 13 host string 14 ips []IP 15 } 16 17 var hosttests = []hostTest{ 18 {"odin", []IP{ 19 IPv4(127, 0, 0, 2), 20 IPv4(127, 0, 0, 3), 21 ParseIP("::2"), 22 }}, 23 {"thor", []IP{ 24 IPv4(127, 1, 1, 1), 25 }}, 26 {"loki", []IP{}}, 27 {"ullr", []IP{ 28 IPv4(127, 1, 1, 2), 29 }}, 30 {"ullrhost", []IP{ 31 IPv4(127, 1, 1, 2), 32 }}, 33 } 34 35 func TestLookupStaticHost(t *testing.T) { 36 p := hostsPath 37 hostsPath = "testdata/hosts" 38 for i := 0; i < len(hosttests); i++ { 39 tt := hosttests[i] 40 ips := lookupStaticHost(tt.host) 41 if len(ips) != len(tt.ips) { 42 t.Errorf("# of hosts = %v; want %v", 43 len(ips), len(tt.ips)) 44 continue 45 } 46 for k, v := range ips { 47 if tt.ips[k].String() != v { 48 t.Errorf("lookupStaticHost(%q) = %v; want %v", 49 tt.host, v, tt.ips[k]) 50 } 51 } 52 } 53 hostsPath = p 54 } 55 56 // https://code.google.com/p/go/issues/detail?id=6646 57 func TestSingleLineHostsFile(t *testing.T) { 58 p := hostsPath 59 hostsPath = "testdata/hosts_singleline" 60 61 ips := lookupStaticHost("odin") 62 if len(ips) != 1 || ips[0] != "127.0.0.2" { 63 t.Errorf("lookupStaticHost = %v, want %v", ips, []string{"127.0.0.2"}) 64 } 65 66 hostsPath = p 67 } 68 69 func TestLookupHost(t *testing.T) { 70 // Can't depend on this to return anything in particular, 71 // but if it does return something, make sure it doesn't 72 // duplicate addresses (a common bug due to the way 73 // getaddrinfo works). 74 addrs, _ := LookupHost("localhost") 75 sort.Strings(addrs) 76 for i := 0; i+1 < len(addrs); i++ { 77 if addrs[i] == addrs[i+1] { 78 t.Fatalf("LookupHost(\"localhost\") = %v, has duplicate addresses", addrs) 79 } 80 } 81 }