--- /dev/null
+#!/usr/bin/env bash
+# Copyright 2015 The Go Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+# For testing darwin/arm{,64} on iOS.
+
+set -e
+ulimit -c 0 # no core files
+
+if [ ! -f make.bash ]; then
+ echo 'iostest.bash must be run from $GOROOT/src' 1>&2
+ exit 1
+fi
+
+if [ -z $GOOS ]; then
+ export GOOS=darwin
+fi
+if [ "$GOOS" != "darwin" ]; then
+ echo "iostest.bash requires GOOS=darwin, got GOOS=$GOOS" 1>&2
+ exit 1
+fi
+if [ "$GOARCH" == "arm" ]; then
+ export GOARM=7
+fi
+
+# Reboot to make sure previous runs do not interfere with the current run.
+# It is reasonably easy for a bad program leave an iOS device in an
+# almost unusable state.
+idevicediagnostics restart
+# Initial sleep to make sure we are restarting before we start polling.
+sleep 30
+# Poll until the device has restarted.
+until idevicediagnostics diagnostics; do
+ # TODO(crawshaw): replace with a test app using go_darwin_arm_exec.
+ echo "waiting for idevice to come online"
+ sleep 10
+done
+# Diagnostics are reported during boot before the device can start an
+# app. Wait a little longer before trying to use the device.
+sleep 30
+
+unset GOBIN
+export GOROOT=$(dirname $(pwd))
+export PATH=$GOROOT/bin:$PATH
+export CGO_ENABLED=1
+export CC_FOR_TARGET=$GOROOT/misc/ios/clangwrap.sh
+
+# Run the build for the host bootstrap, so we can build go_darwin_arm_exec.
+# Also lets us fail early before the (slow) adb push if the build is broken.
+./make.bash
+
+GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \
+ -o ../bin/go_darwin_${GOARCH}_exec \
+ ../misc/ios/go_darwin_arm_exec.go
+
+# Run standard build and tests.
+./all.bash --no-clean