Commit 919e85ae authored by Elias Naur's avatar Elias Naur

misc,src: add support for specifying adb flags to the android harness

Introduce GOANDROID_ADB_FLAGS for additional flags to adb invocations.
With GOANDROID_ADG_FLAGS, the Android builders can distinguish between
emulator and device builds.

Change-Id: I11729926a523ee27f6a3795cb2cfb64a9454f0a5
Reviewed-on: https://go-review.googlesource.com/88795
Run-TryBot: Elias Naur <elias.naur@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: 's avatarHyang-Ah Hana Kim <hyangah@gmail.com>
parent 3810f5bf
...@@ -21,6 +21,9 @@ import ( ...@@ -21,6 +21,9 @@ import (
) )
func run(args ...string) string { func run(args ...string) string {
if flags := os.Getenv("GOANDROID_ADB_FLAGS"); flags != "" {
args = append(strings.Split(flags, " "), args...)
}
buf := new(bytes.Buffer) buf := new(bytes.Buffer)
cmd := exec.Command("adb", args...) cmd := exec.Command("adb", args...)
cmd.Stdout = io.MultiWriter(os.Stdout, buf) cmd.Stdout = io.MultiWriter(os.Stdout, buf)
......
...@@ -56,7 +56,8 @@ func TestMain(m *testing.M) { ...@@ -56,7 +56,8 @@ func TestMain(m *testing.M) {
androiddir = fmt.Sprintf("/data/local/tmp/testcshared-%d", os.Getpid()) androiddir = fmt.Sprintf("/data/local/tmp/testcshared-%d", os.Getpid())
if GOOS == "android" { if GOOS == "android" {
cmd := exec.Command("adb", "shell", "mkdir", "-p", androiddir) args := append(adbCmd(), "shell", "mkdir", "-p", androiddir)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
log.Fatalf("setupAndroid failed: %v\n%s\n", err, out) log.Fatalf("setupAndroid failed: %v\n%s\n", err, out)
...@@ -155,11 +156,19 @@ func cmdToRun(name string) string { ...@@ -155,11 +156,19 @@ func cmdToRun(name string) string {
return "./" + name + exeSuffix return "./" + name + exeSuffix
} }
func adbCmd() []string {
cmd := []string{"adb"}
if flags := os.Getenv("GOANDROID_ADB_FLAGS"); flags != "" {
cmd = append(cmd, strings.Split(flags, " ")...)
}
return cmd
}
func adbPush(t *testing.T, filename string) { func adbPush(t *testing.T, filename string) {
if GOOS != "android" { if GOOS != "android" {
return return
} }
args := []string{"adb", "push", filename, fmt.Sprintf("%s/%s", androiddir, filename)} args := append(adbCmd(), "push", filename, fmt.Sprintf("%s/%s", androiddir, filename))
cmd := exec.Command(args[0], args[1:]...) cmd := exec.Command(args[0], args[1:]...)
if out, err := cmd.CombinedOutput(); err != nil { if out, err := cmd.CombinedOutput(); err != nil {
t.Fatalf("adb command failed: %v\n%s\n", err, out) t.Fatalf("adb command failed: %v\n%s\n", err, out)
...@@ -170,7 +179,7 @@ func adbRun(t *testing.T, env []string, adbargs ...string) string { ...@@ -170,7 +179,7 @@ func adbRun(t *testing.T, env []string, adbargs ...string) string {
if GOOS != "android" { if GOOS != "android" {
t.Fatalf("trying to run adb command when operating system is not android.") t.Fatalf("trying to run adb command when operating system is not android.")
} }
args := []string{"adb", "shell"} args := append(adbCmd(), "shell")
// Propagate LD_LIBRARY_PATH to the adb shell invocation. // Propagate LD_LIBRARY_PATH to the adb shell invocation.
for _, e := range env { for _, e := range env {
if strings.Index(e, "LD_LIBRARY_PATH=") != -1 { if strings.Index(e, "LD_LIBRARY_PATH=") != -1 {
...@@ -238,7 +247,7 @@ func createHeaders() error { ...@@ -238,7 +247,7 @@ func createHeaders() error {
} }
if GOOS == "android" { if GOOS == "android" {
args = []string{"adb", "push", libgoname, fmt.Sprintf("%s/%s", androiddir, libgoname)} args = append(adbCmd(), "push", libgoname, fmt.Sprintf("%s/%s", androiddir, libgoname))
cmd = exec.Command(args[0], args[1:]...) cmd = exec.Command(args[0], args[1:]...)
out, err = cmd.CombinedOutput() out, err = cmd.CombinedOutput()
if err != nil { if err != nil {
...@@ -271,7 +280,8 @@ func cleanupAndroid() { ...@@ -271,7 +280,8 @@ func cleanupAndroid() {
if GOOS != "android" { if GOOS != "android" {
return return
} }
cmd := exec.Command("adb", "shell", "rm", "-rf", androiddir) args := append(adbCmd(), "shell", "rm", "-rf", androiddir)
cmd := exec.Command(args[0], args[1:]...)
out, err := cmd.CombinedOutput() out, err := cmd.CombinedOutput()
if err != nil { if err != nil {
log.Fatalf("cleanupAndroid failed: %v\n%s\n", err, out) log.Fatalf("cleanupAndroid failed: %v\n%s\n", err, out)
......
...@@ -77,8 +77,8 @@ cp -a "${GOROOT}/lib" "${FAKE_GOROOT}/" ...@@ -77,8 +77,8 @@ cp -a "${GOROOT}/lib" "${FAKE_GOROOT}/"
cp -a "${pkgdir}" "${FAKE_GOROOT}/pkg/" cp -a "${pkgdir}" "${FAKE_GOROOT}/pkg/"
echo '# Syncing test files to android device' echo '# Syncing test files to android device'
adb shell mkdir -p /data/local/tmp/goroot adb $GOANDROID_ADB_FLAGS shell mkdir -p /data/local/tmp/goroot
time adb sync data &> /dev/null time adb $GOANDROID_ADB_FLAGS sync data &> /dev/null
export CLEANER=${ANDROID_TEST_DIR}/androidcleaner-$$ export CLEANER=${ANDROID_TEST_DIR}/androidcleaner-$$
cp ../misc/android/cleaner.go $CLEANER.go cp ../misc/android/cleaner.go $CLEANER.go
...@@ -86,8 +86,8 @@ echo 'var files = `' >> $CLEANER.go ...@@ -86,8 +86,8 @@ echo 'var files = `' >> $CLEANER.go
(cd $ANDROID_PRODUCT_OUT/data/local/tmp/goroot; find . >> $CLEANER.go) (cd $ANDROID_PRODUCT_OUT/data/local/tmp/goroot; find . >> $CLEANER.go)
echo '`' >> $CLEANER.go echo '`' >> $CLEANER.go
go build -o $CLEANER $CLEANER.go go build -o $CLEANER $CLEANER.go
adb push $CLEANER /data/local/tmp/cleaner adb $GOANDROID_ADB_FLAGS push $CLEANER /data/local/tmp/cleaner
adb shell /data/local/tmp/cleaner adb $GOANDROID_ADB_FLAGS shell /data/local/tmp/cleaner
echo '' echo ''
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment