From: Elias Naur Date: Mon, 7 May 2018 11:05:27 +0000 (+0200) Subject: misc/ios: uninstall app before installing it X-Git-Tag: go1.11beta1~510 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9b16b9c7f95562bb290f5015324a345be855894d;p=gostls13.git misc/ios: uninstall app before installing it Tests can fail because there is leftover data from a previous run. For example: --- FAIL: TestRemoveAll (0.00s) path_test.go:96: RemoveAll "/private/var/mobile/Containers/Data/Application/66247524-5ED7-45A4-82AA-6BF15D6078B2/tmp//_TestRemoveAll_" (first): open /private/var/mobile/Containers/Data/Application/66247524-5ED7-45A4-82AA-6BF15D6078B2/tmp//_TestRemoveAll_/dir: permission denied FAIL FAIL os 31.275s There seem to be no way to simply clear the app data for an app short of uninstalling it, so do that. This change in effect undoes CL 106676, which means that running iOS is a little slower again, and that another app from the same apple developer account must be present on the device for our app install to succeed. Change-Id: Iacc3a6f95c93568f4418db45e1098c7c7fdb88e0 Reviewed-on: https://go-review.googlesource.com/111795 TryBot-Result: Gobot Gobot Reviewed-by: Brad Fitzpatrick --- diff --git a/misc/ios/go_darwin_arm_exec.go b/misc/ios/go_darwin_arm_exec.go index d04f3725b3..50e0342f67 100644 --- a/misc/ios/go_darwin_arm_exec.go +++ b/misc/ios/go_darwin_arm_exec.go @@ -125,6 +125,10 @@ func runMain() (int, error) { return 1, err } + if err := uninstall(bundleID); err != nil { + return 1, err + } + if err := install(appdir); err != nil { return 1, err } @@ -413,6 +417,18 @@ func parsePlistDict(dict []byte) (map[string]string, error) { return values, nil } +func uninstall(bundleID string) error { + cmd := idevCmd(exec.Command( + "ideviceinstaller", + "-U", bundleID, + )) + if out, err := cmd.CombinedOutput(); err != nil { + os.Stderr.Write(out) + return fmt.Errorf("ideviceinstaller -U %q: %s", bundleID, err) + } + return nil +} + func install(appdir string) error { attempt := 0 for {