mirror of
https://github.com/servo/servo.git
synced 2025-08-04 21:20:23 +01:00
Refactor run_in_headless_android_emulator.py into more functions
This commit is contained in:
parent
48f6e168d4
commit
f5ff709c79
1 changed files with 33 additions and 24 deletions
|
@ -48,28 +48,10 @@ def main(avd_name, apk_path, *args):
|
||||||
|
|
||||||
# Now `adb shell` will work, but `adb install` needs a system service
|
# Now `adb shell` will work, but `adb install` needs a system service
|
||||||
# that might still be in the midle of starting and not be responsive yet.
|
# that might still be in the midle of starting and not be responsive yet.
|
||||||
|
wait_for_boot(adb)
|
||||||
# https://stackoverflow.com/a/38896494/1162888
|
|
||||||
while 1:
|
|
||||||
with terminate_on_exit(
|
|
||||||
adb + ["shell", "getprop", "sys.boot_completed"],
|
|
||||||
stdout=subprocess.PIPE,
|
|
||||||
) as getprop:
|
|
||||||
stdout, stderr = getprop.communicate()
|
|
||||||
if "1" in stdout:
|
|
||||||
break
|
|
||||||
time.sleep(1)
|
|
||||||
|
|
||||||
check_call(adb + ["install", "-r", apk_path])
|
check_call(adb + ["install", "-r", apk_path])
|
||||||
|
write_args(adb, args)
|
||||||
data_dir = "/sdcard/Android/data/com.mozilla.servo/files"
|
|
||||||
params_file = data_dir + "/android_params"
|
|
||||||
|
|
||||||
check_call(adb + ["shell", "mkdir -p %s" % data_dir])
|
|
||||||
check_call(adb + ["shell", "echo 'servo' > %s" % params_file])
|
|
||||||
for arg in args:
|
|
||||||
check_call(adb + ["shell", "echo %s >> %s" % (shell_quote(arg), params_file)])
|
|
||||||
|
|
||||||
check_call(adb + ["shell", "am start com.mozilla.servo/com.mozilla.servo.MainActivity"],
|
check_call(adb + ["shell", "am start com.mozilla.servo/com.mozilla.servo.MainActivity"],
|
||||||
stdout=sys.stderr)
|
stdout=sys.stderr)
|
||||||
|
|
||||||
|
@ -103,11 +85,38 @@ def terminate_on_exit(*args, **kwargs):
|
||||||
process.terminate()
|
process.terminate()
|
||||||
|
|
||||||
|
|
||||||
def check_call(*args, **kwargs):
|
# https://stackoverflow.com/a/38896494/1162888
|
||||||
|
def wait_for_boot(adb):
|
||||||
|
while 1:
|
||||||
|
with terminate_on_exit(
|
||||||
|
adb + ["shell", "getprop", "sys.boot_completed"],
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
) as getprop:
|
||||||
|
stdout, stderr = getprop.communicate()
|
||||||
|
if "1" in stdout:
|
||||||
|
return
|
||||||
|
time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
def call(*args, **kwargs):
|
||||||
with terminate_on_exit(*args, **kwargs) as process:
|
with terminate_on_exit(*args, **kwargs) as process:
|
||||||
exit_code = process.wait()
|
return process.wait()
|
||||||
if exit_code != 0:
|
|
||||||
sys.exit(exit_code)
|
|
||||||
|
def check_call(*args, **kwargs):
|
||||||
|
exit_code = call(*args, **kwargs)
|
||||||
|
if exit_code != 0:
|
||||||
|
sys.exit(exit_code)
|
||||||
|
|
||||||
|
|
||||||
|
def write_args(adb, args):
|
||||||
|
data_dir = "/sdcard/Android/data/com.mozilla.servo/files"
|
||||||
|
params_file = data_dir + "/android_params"
|
||||||
|
|
||||||
|
check_call(adb + ["shell", "mkdir -p %s" % data_dir])
|
||||||
|
check_call(adb + ["shell", "echo 'servo' > %s" % params_file])
|
||||||
|
for arg in args:
|
||||||
|
check_call(adb + ["shell", "echo %s >> %s" % (shell_quote(arg), params_file)])
|
||||||
|
|
||||||
|
|
||||||
# Copied from Python 3.3+'s shlex.quote()
|
# Copied from Python 3.3+'s shlex.quote()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue