From bd4b6ca781e7e82580620011f8af2a7f11c5c239 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Cl=C3=A9ment=20Chigot?= Date: Fri, 2 Nov 2018 10:55:12 +0100 Subject: [PATCH] all: fix tests for older versions of AIX 7.2 This commit fixes tests which fail on some versions of AIX 7.2 due to internal bugs. getsockname isn't working properly with unix networks. Timezone files aren't returning a correct output. Change-Id: I4ff15683912be62ab86dfbeeb63b73513404d086 Reviewed-on: https://go-review.googlesource.com/c/146940 Run-TryBot: Ian Lance Taylor Reviewed-by: Ian Lance Taylor --- src/net/platform_test.go | 12 ++++++++++++ src/time/zoneinfo_read.go | 9 +++++++++ 2 files changed, 21 insertions(+) diff --git a/src/net/platform_test.go b/src/net/platform_test.go index 01c579bd8e..7e9ad70d19 100644 --- a/src/net/platform_test.go +++ b/src/net/platform_test.go @@ -7,7 +7,9 @@ package net import ( "internal/testenv" "os" + "os/exec" "runtime" + "strconv" "strings" "testing" ) @@ -35,6 +37,16 @@ func testableNetwork(network string) bool { switch runtime.GOOS { case "android", "nacl", "plan9", "windows": return false + case "aix": + // Unix network isn't properly working on AIX 7.2 with Technical Level < 2 + out, err := exec.Command("oslevel", "-s").Output() + if err != nil { + return false + } + if tl, err := strconv.Atoi(string(out[5:7])); err != nil || tl < 2 { + return false + } + return true } // iOS does not support unix, unixgram. if runtime.GOOS == "darwin" && (runtime.GOARCH == "arm" || runtime.GOARCH == "arm64") { diff --git a/src/time/zoneinfo_read.go b/src/time/zoneinfo_read.go index 15d6aab1de..b495217c06 100644 --- a/src/time/zoneinfo_read.go +++ b/src/time/zoneinfo_read.go @@ -11,6 +11,7 @@ package time import ( "errors" + "runtime" "syscall" ) @@ -172,6 +173,14 @@ func LoadLocationFromTZData(name string, data []byte) (*Location, error) { return nil, badData } zone[i].name = byteString(abbrev[b:]) + if runtime.GOOS == "aix" && len(name) > 8 && (name[:8] == "Etc/GMT+" || name[:8] == "Etc/GMT-") { + // There is a bug with AIX 7.2 TL 0 with files in Etc, + // GMT+1 will return GMT-1 instead of GMT+1 or -01. + if name != "Etc/GMT+0" { + // GMT+0 is OK + zone[i].name = name[4:] + } + } } // Now the transition time info. -- 2.50.0