]>
Commit | Line | Data |
---|---|---|
1a4d82fc JJ |
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 | ||
5bcae85e | 11 | def adb(args, attempts = 1): |
1a4d82fc JJ |
12 | if verbose: |
13 | print args | |
5bcae85e SL |
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 | |
1a4d82fc JJ |
31 | |
32 | def pull_from_device(path): | |
33 | tmp = tempfile.mktemp() | |
5bcae85e | 34 | adb(['pull', path, tmp], 5) |
1a4d82fc JJ |
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' | |
5bcae85e SL |
43 | adb(['push', path, tmp_path], 5) |
44 | adb(['shell', 'cp "%s" "%s" 2>&1' % (tmp_path, dst_path)], 5) |