]> git.proxmox.com Git - rustc.git/blob - src/compiler-rt/test/asan/android_commands/android_common.py
New upstream version 1.12.0+dfsg1
[rustc.git] / src / compiler-rt / test / asan / android_commands / android_common.py
1 import os, subprocess, tempfile
2 import time
3
4 ANDROID_TMPDIR = '/data/local/tmp/Output'
5 ADB = os.environ.get('ADB', 'adb')
6
7 verbose = False
8 if os.environ.get('ANDROID_RUN_VERBOSE') == '1':
9 verbose = True
10
11 def adb(args, attempts = 1):
12 if verbose:
13 print args
14 tmpname = tempfile.mktemp()
15 out = open(tmpname, 'w')
16 ret = 255
17 while attempts > 0 and ret != 0:
18 attempts -= 1
19 ret = subprocess.call([ADB] + args, stdout=out, stderr=subprocess.STDOUT)
20 if attempts != 0:
21 ret = 5
22 if ret != 0:
23 print "adb command failed", args
24 print tmpname
25 out.close()
26 out = open(tmpname, 'r')
27 print out.read()
28 out.close()
29 os.unlink(tmpname)
30 return ret
31
32 def pull_from_device(path):
33 tmp = tempfile.mktemp()
34 adb(['pull', path, tmp], 5)
35 text = open(tmp, 'r').read()
36 os.unlink(tmp)
37 return text
38
39 def push_to_device(path):
40 # Workaround for https://code.google.com/p/android/issues/detail?id=65857
41 dst_path = os.path.join(ANDROID_TMPDIR, os.path.basename(path))
42 tmp_path = dst_path + '.push'
43 adb(['push', path, tmp_path], 5)
44 adb(['shell', 'cp "%s" "%s" 2>&1' % (tmp_path, dst_path)], 5)