]> Cypherpunks repositories - gostls13.git/commitdiff
net: skip TestInterfacesWithNetsh if "netsh help" contains no English words
authorAlex Brainman <alex.brainman@gmail.com>
Tue, 29 Mar 2016 01:24:18 +0000 (12:24 +1100)
committerAlex Brainman <alex.brainman@gmail.com>
Wed, 30 Mar 2016 01:51:23 +0000 (01:51 +0000)
Fixes #14859

Change-Id: I262d634ee22498ec9855d273afdd409149765294
Reviewed-on: https://go-review.googlesource.com/21195
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/net/net_windows_test.go

index 12846426635ac78f00a615c2b0d7837639e1e84c..38edbc29ab679172e567ba6a7f883511b9c328a5 100644 (file)
@@ -178,18 +178,6 @@ func isWindowsXP(t *testing.T) bool {
        return major < 6
 }
 
-var (
-       modkernel32 = syscall.NewLazyDLL("kernel32.dll")
-       procGetACP  = modkernel32.NewProc("GetACP")
-)
-
-func isEnglishOS(t *testing.T) bool {
-       const windows_1252 = 1252 // ANSI Latin 1; Western European (Windows)
-       r0, _, _ := syscall.Syscall(procGetACP.Addr(), 0, 0, 0, 0)
-       acp := uint32(r0)
-       return acp == windows_1252
-}
-
 func runCmd(args ...string) ([]byte, error) {
        removeUTF8BOM := func(b []byte) []byte {
                if len(b) >= 3 && b[0] == 0xEF && b[1] == 0xBB && b[2] == 0xBF {
@@ -226,6 +214,14 @@ func runCmd(args ...string) ([]byte, error) {
        return removeUTF8BOM(out), nil
 }
 
+func netshSpeaksEnglish(t *testing.T) bool {
+       out, err := runCmd("netsh", "help")
+       if err != nil {
+               t.Fatal(err)
+       }
+       return bytes.Contains(out, []byte("The following commands are available:"))
+}
+
 func netshInterfaceIPShowInterface(ipver string, ifaces map[string]bool) error {
        out, err := runCmd("netsh", "interface", ipver, "show", "interface", "level=verbose")
        if err != nil {
@@ -273,8 +269,8 @@ func TestInterfacesWithNetsh(t *testing.T) {
        if isWindowsXP(t) {
                t.Skip("Windows XP netsh command does not provide required functionality")
        }
-       if !isEnglishOS(t) {
-               t.Skip("English version of OS required for this test")
+       if !netshSpeaksEnglish(t) {
+               t.Skip("English version of netsh required for this test")
        }
 
        toString := func(name string, isup bool) string {
@@ -447,8 +443,8 @@ func TestInterfaceAddrsWithNetsh(t *testing.T) {
        if isWindowsXP(t) {
                t.Skip("Windows XP netsh command does not provide required functionality")
        }
-       if !isEnglishOS(t) {
-               t.Skip("English version of OS required for this test")
+       if !netshSpeaksEnglish(t) {
+               t.Skip("English version of netsh required for this test")
        }
 
        outIPV4, err := runCmd("netsh", "interface", "ipv4", "show", "address")
@@ -507,12 +503,20 @@ func TestInterfaceAddrsWithNetsh(t *testing.T) {
        }
 }
 
+func getmacSpeaksEnglish(t *testing.T) bool {
+       out, err := runCmd("getmac", "/?")
+       if err != nil {
+               t.Fatal(err)
+       }
+       return bytes.Contains(out, []byte("network adapters on a system"))
+}
+
 func TestInterfaceHardwareAddrWithGetmac(t *testing.T) {
        if isWindowsXP(t) {
                t.Skip("Windows XP does not have powershell command")
        }
-       if !isEnglishOS(t) {
-               t.Skip("English version of OS required for this test")
+       if !getmacSpeaksEnglish(t) {
+               t.Skip("English version of getmac required for this test")
        }
 
        ift, err := Interfaces()