From: Russ Cox Date: Thu, 18 Feb 2021 16:47:47 +0000 (-0500) Subject: net: disable Windows netsh tests when netsh won't run X-Git-Tag: go1.17beta1~1485 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=ee7038f6a5;p=gostls13.git net: disable Windows netsh tests when netsh won't run On my Surface Pro X running the insider preview, running "netsh help" from Powershell started from the task bar works. But running "powershell" at a cmd.exe prompt and then running "netsh help" produces missing DLL errors. These aren't our fault, so just skip the netsh-based tests if this happens. Change-Id: I13a17e01143d823d3b5242d827db056bd253e3e9 Reviewed-on: https://go-review.googlesource.com/c/go/+/293849 Trust: Russ Cox Reviewed-by: Cherry Zhang --- diff --git a/src/net/net_windows_test.go b/src/net/net_windows_test.go index a0000950c6..2a563a078c 100644 --- a/src/net/net_windows_test.go +++ b/src/net/net_windows_test.go @@ -204,12 +204,17 @@ func runCmd(args ...string) ([]byte, error) { return removeUTF8BOM(out), nil } -func netshSpeaksEnglish(t *testing.T) bool { +func checkNetsh(t *testing.T) { out, err := runCmd("netsh", "help") if err != nil { t.Fatal(err) } - return bytes.Contains(out, []byte("The following commands are available:")) + if bytes.Contains(out, []byte("The following helper DLL cannot be loaded")) { + t.Skipf("powershell failure:\n%s", err) + } + if !bytes.Contains(out, []byte("The following commands are available:")) { + t.Skipf("powershell does not speak English:\n%s", out) + } } func netshInterfaceIPShowInterface(ipver string, ifaces map[string]bool) error { @@ -256,9 +261,7 @@ func netshInterfaceIPShowInterface(ipver string, ifaces map[string]bool) error { } func TestInterfacesWithNetsh(t *testing.T) { - if !netshSpeaksEnglish(t) { - t.Skip("English version of netsh required for this test") - } + checkNetsh(t) toString := func(name string, isup bool) string { if isup { @@ -427,9 +430,7 @@ func netshInterfaceIPv6ShowAddress(name string, netshOutput []byte) []string { } func TestInterfaceAddrsWithNetsh(t *testing.T) { - if !netshSpeaksEnglish(t) { - t.Skip("English version of netsh required for this test") - } + checkNetsh(t) outIPV4, err := runCmd("netsh", "interface", "ipv4", "show", "address") if err != nil {