runtest: add --install-filter parameter
--install-filter parameter is a regular expression that will be used
to match the compiled apks to determine if it needs to be installed.
This is very helpful when there are many apks in a test directory,
but you only care about one during development.
e.g. fw/base/core/tests/coretests
Change-Id: I6a6a04640e549be4d90c9c659e557e7870af6771
diff --git a/testrunner/runtest.py b/testrunner/runtest.py
index 37b6198..bb81a0f 100755
--- a/testrunner/runtest.py
+++ b/testrunner/runtest.py
@@ -177,6 +177,12 @@
" This is the integer user id, e.g. 0 or 10."
" If no user is specified, apk will be installed with"
" adb's default behavior, which is currently all users.")
+ parser.add_option("--install-filter", dest="filter_re",
+ help="Regular expression which generated apks have to"
+ " match to be installed to target device. Default is None"
+ " and will install all packages built. This is"
+ " useful when the test path has a lot of apks but you"
+ " only care about one.")
group = optparse.OptionGroup(
parser, "Targets", "Use these options to direct tests to a specific "
"Android target")
@@ -318,9 +324,11 @@
output = run_command.RunCommand(cmd, return_output=True, timeout_time=600)
run_command.SetAbortOnError(False)
logger.SilentLog(output)
- self._DoInstall(output, test_requires_permissions)
+ filter_re = re.compile(self._options.filter_re) if self._options.filter_re else None
- def _DoInstall(self, make_output, test_requires_permissions):
+ self._DoInstall(output, test_requires_permissions, filter_re=filter_re)
+
+ def _DoInstall(self, make_output, test_requires_permissions, filter_re=None):
"""Install artifacts from build onto device.
Looks for 'install:' text from make output to find artifacts to install.
@@ -338,6 +346,8 @@
# the remaining string is a space-separated list of build-generated files
install_paths = m.group(2)
for install_path in re.split(r'\s+', install_paths):
+ if filter_re and not filter_re.match(install_path):
+ continue
if install_path.endswith(".apk"):
abs_install_path = os.path.join(self._root_path, install_path)
extra_flags = ""