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 {
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 {
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 {
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")
}
}
+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()