From ee7038f6a5f12d68a49b8b8193702341e5b8b151 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Thu, 18 Feb 2021 11:47:47 -0500 Subject: [PATCH] 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 --- src/net/net_windows_test.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) 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 { -- 2.50.0