update to G903WVLU1CQH4
[GitHub/Stricted/sm-g903f-system.git] / bin / uiautomator
CommitLineData
83dc35bd
S
1#
2# Copyright (C) 2012 The Android Open Source Project
3#
4# Licensed under the Apache License, Version 2.0 (the "License");
5# you may not use this file except in compliance with the License.
6# You may obtain a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS,
12# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13# See the License for the specific language governing permissions and
14# limitations under the License.
15#
16# Script to start "uiautomator" on the device
17#
18# The script does a couple of things:
19# * Use an alternative dalvik cache when running as non-root. Jar file needs
20# to be dexopt'd to run in Dalvik. For plain jar files, this is done at first
21# use. shell user does not have write permission to default system Dalvik
22# cache so we redirect to an alternative cache
23# * special processing for subcommand 'runtest':
24# * '--nohup' allows process continue to run even if parent process that
25# started it has already terminated. We parse for this parameter and set
26# signal trap. This is useful for testing with USB disconnected
27# * all jar files that the test classes resides in, or dependent on are
28# provided on command line and exported to CLASSPATH environment variable
29# before starting the Java code. This offloads the task of class loading
30# and resolving of cross jar class dependency to Dalvik
31# * all other subcommand or options are directly passed into Java code for
32# further parsing
33
34export run_base=/data/local/tmp
35export base=/system
36
37# if not running as root, trick dalvik into using an alternative dex cache
38if [ ${USER_ID} -ne 0 ]; then
39 tmp_cache=${run_base}/dalvik-cache
40
41 if [ ! -d ${tmp_cache} ]; then
42 mkdir -p ${tmp_cache}
43 fi
44
45 export ANDROID_DATA=${run_base}
46fi
47
48# take first parameter as the command
49cmd=${1}
50
51if [ -z "${1}" ]; then
52 cmd="help"
53fi
54
55# strip the command parameter
56if [ -n "${1}" ]; then
57 shift
58fi
59
60CLASSPATH=/system/framework/android.test.runner.jar:${base}/framework/uiautomator.jar
61
62# eventually args will be what get passed down to Java code
63args=
64# we also pass the list of jar files, so we can extract class names for tests
65# if they are not explicitly specified
66jars=
67
68# special case pre-processing for 'runtest' command
69if [ "${cmd}" == "runtest" ]; then
8c8508f8
S
70 # Print deprecation warning
71 echo "Warning: This version of UI Automator is deprecated. New tests should be written using"
72 echo "UI Automator 2.0 which is available as part of the Android Testing Support Library."
73 echo "See https://developer.android.com/training/testing/ui-testing/uiautomator-testing.html"
74 echo "for more details."
83dc35bd
S
75 # first parse the jar paths
76 while [ true ]; do
77 if [ -z "${1}" ] && [ -z "${jars}" ]; then
78 echo "Error: more parameters expected for runtest; please see usage for details"
79 cmd="help"
80 break
81 fi
82 if [ -z "${1}" ]; then
83 break
84 fi
85 jar=${1}
86 if [ "${1:0:1}" = "-" ]; then
87 # we are done with jars, starting with parameters now
88 break
89 fi
90 # if relative path, append the default path prefix
91 if [ "${1:0:1}" != "/" ]; then
92 jar=${run_base}/${1}
93 fi
94 # about to add the file to class path, check if it's valid
95 if [ ! -f ${jar} ]; then
96 echo "Error: ${jar} does not exist"
97 # force to print help message
98 cmd="help"
99 break
100 fi
101 jars=${jars}:${jar}
102 # done processing current arg, moving on
103 shift
104 done
105 # look for --nohup: if found, consume it and trap SIG_HUP, otherwise just
106 # append the arg to args
107 while [ -n "${1}" ]; do
108 if [ "${1}" = "--nohup" ]; then
109 trap "" HUP
110 shift
111 else
112 args="${args} ${1}"
113 shift
114 fi
115 done
116else
117 # if cmd is not 'runtest', just take the rest of the args
118 args=${@}
119fi
120
121args="${cmd} ${args}"
122if [ -n "${jars}" ]; then
123 args="${args} -e jars ${jars}"
124fi
125
126CLASSPATH=${CLASSPATH}:${jars}
127export CLASSPATH
128exec app_process ${base}/bin com.android.commands.uiautomator.Launcher ${args}