mirror of
https://github.com/golang/go
synced 2024-11-20 10:04:45 -07:00
25ece4ae44
androidtest.bash copies some go source to the android device where the tests are going to run. It's necessary because some tests require files and resources to be present. The copy is done through adb sync. The script hoped faking the directory using symlinks to work, but it doesn't. (adb sync doesn't follow the symlinks) We need proper copy. Change-Id: If55abca4958f159859e58512b0045f23654167e3 Reviewed-on: https://go-review.googlesource.com/2827 Reviewed-by: David Crawshaw <crawshaw@golang.org>
57 lines
1.7 KiB
Bash
Executable File
57 lines
1.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Copyright 2014 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 Android.
|
|
# The compiler runs locally, then a copy of the GOROOT is pushed to a
|
|
# target device using adb, and the tests are run there.
|
|
|
|
set -e
|
|
ulimit -c 0 # no core files
|
|
|
|
if [ ! -f make.bash ]; then
|
|
echo 'androidtest.bash must be run from $GOROOT/src' 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $GOOS ]; then
|
|
export GOOS=android
|
|
fi
|
|
if [ "$GOOS" != "android" ]; then
|
|
echo "androidtest.bash requires GOOS=android, got GOOS=$GOOS" 1>&2
|
|
exit 1
|
|
fi
|
|
|
|
export CGO_ENABLED=1
|
|
|
|
# Run the build for the host bootstrap, so we can build go_android_exec.
|
|
# Also lets us fail early before the (slow) adb push if the build is broken.
|
|
./make.bash
|
|
export GOROOT=$(dirname $(pwd))
|
|
export PATH=$GOROOT/bin:$PATH
|
|
GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH go build \
|
|
-o ../bin/go_android_${GOARCH}_exec \
|
|
../misc/android/go_android_exec.go
|
|
|
|
# Push GOROOT to target device.
|
|
#
|
|
# The adb sync command will sync either the /system or /data
|
|
# directories of an android device from a similar directory
|
|
# on the host. We copy the files required for running tests under
|
|
# /data/local/tmp/goroot. The adb sync command does not follow
|
|
# symlinks so we have to copy.
|
|
export ANDROID_PRODUCT_OUT=/tmp/androidtest-$$
|
|
FAKE_GOROOT=$ANDROID_PRODUCT_OUT/data/local/tmp/goroot
|
|
mkdir -p $FAKE_GOROOT
|
|
cp -R --preserve=all "${GOROOT}/src" "${FAKE_GOROOT}/"
|
|
cp -R --preserve=all "${GOROOT}/test" "${FAKE_GOROOT}/"
|
|
cp -R --preserve=all "${GOROOT}/lib" "${FAKE_GOROOT}/"
|
|
echo '# Syncing test files to android device'
|
|
time adb sync data &> /dev/null
|
|
echo ''
|
|
rm -rf "$ANDROID_PRODUCT_OUT"
|
|
|
|
# Run standard build and tests.
|
|
./all.bash --no-clean
|