David Crawshaw | fe71b387b | 2014-07-09 14:54:11 -0400 | [diff] [blame] | 1 | #!/usr/bin/env bash |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 2 | # Copyright 2014 The Go Authors. All rights reserved. |
| 3 | # Use of this source code is governed by a BSD-style |
| 4 | # license that can be found in the LICENSE file. |
| 5 | |
| 6 | # For testing Android. |
| 7 | # The compiler runs locally, then a copy of the GOROOT is pushed to a |
| 8 | # target device using adb, and the tests are run there. |
| 9 | |
| 10 | set -e |
| 11 | ulimit -c 0 # no core files |
| 12 | |
| 13 | if [ ! -f make.bash ]; then |
Burcu Dogan | e13170e | 2015-01-14 18:49:03 -0800 | [diff] [blame] | 14 | echo 'androidtest.bash must be run from $GOROOT/src' 1>&2 |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 15 | exit 1 |
| 16 | fi |
| 17 | |
| 18 | if [ -z $GOOS ]; then |
| 19 | export GOOS=android |
| 20 | fi |
| 21 | if [ "$GOOS" != "android" ]; then |
| 22 | echo "androidtest.bash requires GOOS=android, got GOOS=$GOOS" 1>&2 |
| 23 | exit 1 |
| 24 | fi |
| 25 | |
| 26 | export CGO_ENABLED=1 |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 27 | unset GOBIN |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 28 | |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 29 | # Do the build first, so we can build go_android_exec and cleaner. |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 30 | # Also lets us fail early before the (slow) adb push if the build is broken. |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 31 | . ./make.bash --no-banner |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 32 | export GOROOT=$(dirname $(pwd)) |
| 33 | export PATH=$GOROOT/bin:$PATH |
| 34 | GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \ |
| 35 | -o ../bin/go_android_${GOARCH}_exec \ |
| 36 | ../misc/android/go_android_exec.go |
| 37 | |
Hyang-Ah (Hana) Kim | a81c656 | 2015-07-17 15:40:26 -0400 | [diff] [blame] | 38 | export ANDROID_TEST_DIR=/tmp/androidtest-$$ |
| 39 | |
| 40 | function cleanup() { |
| 41 | rm -rf ${ANDROID_TEST_DIR} |
| 42 | } |
| 43 | trap cleanup EXIT |
| 44 | |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 45 | # Push GOROOT to target device. |
| 46 | # |
| 47 | # The adb sync command will sync either the /system or /data |
| 48 | # directories of an android device from a similar directory |
Hyang-Ah Hana Kim | 25ece4a | 2015-01-14 12:13:17 -0500 | [diff] [blame] | 49 | # on the host. We copy the files required for running tests under |
| 50 | # /data/local/tmp/goroot. The adb sync command does not follow |
| 51 | # symlinks so we have to copy. |
Hyang-Ah (Hana) Kim | a81c656 | 2015-07-17 15:40:26 -0400 | [diff] [blame] | 52 | export ANDROID_PRODUCT_OUT="${ANDROID_TEST_DIR}/out" |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 53 | FAKE_GOROOT=$ANDROID_PRODUCT_OUT/data/local/tmp/goroot |
David Crawshaw | 4c05d32 | 2014-09-08 10:07:26 -0400 | [diff] [blame] | 54 | mkdir -p $FAKE_GOROOT |
David Crawshaw | 68f57c8 | 2015-04-08 09:28:05 -0400 | [diff] [blame] | 55 | mkdir -p $FAKE_GOROOT/pkg |
Hyang-Ah (Hana) Kim | 69937d2 | 2015-02-13 15:31:00 -0500 | [diff] [blame] | 56 | cp -a "${GOROOT}/src" "${FAKE_GOROOT}/" |
| 57 | cp -a "${GOROOT}/test" "${FAKE_GOROOT}/" |
| 58 | cp -a "${GOROOT}/lib" "${FAKE_GOROOT}/" |
David Crawshaw | 68f57c8 | 2015-04-08 09:28:05 -0400 | [diff] [blame] | 59 | cp -a "${GOROOT}/pkg/android_$GOARCH" "${FAKE_GOROOT}/pkg/" |
David Crawshaw | fa9f305 | 2014-09-04 13:39:51 -0400 | [diff] [blame] | 60 | echo '# Syncing test files to android device' |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 61 | adb shell mkdir -p /data/local/tmp/goroot |
David Crawshaw | fa9f305 | 2014-09-04 13:39:51 -0400 | [diff] [blame] | 62 | time adb sync data &> /dev/null |
David Crawshaw | a5f8e8f | 2014-07-09 06:56:49 -0400 | [diff] [blame] | 63 | |
Hyang-Ah (Hana) Kim | a81c656 | 2015-07-17 15:40:26 -0400 | [diff] [blame] | 64 | export CLEANER=${ANDROID_TEST_DIR}/androidcleaner-$$ |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 65 | cp ../misc/android/cleaner.go $CLEANER.go |
| 66 | echo 'var files = `' >> $CLEANER.go |
| 67 | (cd $ANDROID_PRODUCT_OUT/data/local/tmp/goroot; find . >> $CLEANER.go) |
| 68 | echo '`' >> $CLEANER.go |
| 69 | go build -o $CLEANER $CLEANER.go |
| 70 | adb push $CLEANER /data/local/tmp/cleaner |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 71 | adb shell /data/local/tmp/cleaner |
| 72 | |
David Crawshaw | 0b36e12 | 2015-05-25 07:17:27 -0400 | [diff] [blame] | 73 | echo '' |
| 74 | |
| 75 | # Run standard tests. |
| 76 | bash run.bash --no-rebuild |