From: Elias Naur Date: Wed, 1 May 2019 07:39:49 +0000 (+0200) Subject: os,time: fix tests on iOS X-Git-Tag: go1.13beta1~460 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=b39daa7a11a436076e19ee891319dd47894e09da;p=gostls13.git os,time: fix tests on iOS When fixing tests for for self-hosted iOS builds, I broke hosted builds. Updates #31722 Change-Id: Id4e7d234fbd86cb2d29d320d75f4441efd663d12 Reviewed-on: https://go-review.googlesource.com/c/go/+/174698 Run-TryBot: Elias Naur TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- diff --git a/src/os/os_test.go b/src/os/os_test.go index c438508ceb..c101281258 100644 --- a/src/os/os_test.go +++ b/src/os/os_test.go @@ -1204,6 +1204,7 @@ func TestChdirAndGetwd(t *testing.T) { case "darwin": switch runtime.GOARCH { case "arm", "arm64": + dirs = nil for _, d := range []string{"d1", "d2"} { dir, err := ioutil.TempDir("", d) if err != nil { diff --git a/src/time/zoneinfo_ios.go b/src/time/zoneinfo_ios.go index 09383a5b30..f5a97befd8 100644 --- a/src/time/zoneinfo_ios.go +++ b/src/time/zoneinfo_ios.go @@ -13,20 +13,31 @@ import ( ) var zoneSources = []string{ - getZipParent() + "/zoneinfo.zip", - runtime.GOROOT() + "/lib/time/zoneinfo.zip", + getZoneRoot() + "/zoneinfo.zip", } -func getZipParent() string { - wd, err := syscall.Getwd() - if err != nil { - return "/XXXNOEXIST" - } - +func getZoneRoot() string { // The working directory at initialization is the root of the // app bundle: "/private/.../bundlename.app". That's where we - // keep zoneinfo.zip. - return wd + // keep zoneinfo.zip for tethered iOS builds. + // For self-hosted iOS builds, the zoneinfo.zip is in GOROOT. + roots := []string{runtime.GOROOT() + "/lib/time"} + wd, err := syscall.Getwd() + if err == nil { + roots = append(roots, wd) + } + for _, r := range roots { + var st syscall.Stat_t + fd, err := syscall.Open(r, syscall.O_RDONLY, 0) + if err != nil { + continue + } + defer syscall.Close(fd) + if err := syscall.Fstat(fd, &st); err == nil { + return r + } + } + return "/XXXNOEXIST" } func initLocal() {