Fix runtest --path for tests built against SDK.
Bug 4556556
Change-Id: I3f829cae8f9fc1e64b3a44ac9e306b13b3cead7c
diff --git a/testrunner/android_manifest.py b/testrunner/android_manifest.py
index 5825118..6e8bd6c 100644
--- a/testrunner/android_manifest.py
+++ b/testrunner/android_manifest.py
@@ -34,7 +34,7 @@
def __init__(self, app_path=None):
if app_path:
- self.ParseManifest(app_path)
+ self._ParseManifest(app_path)
def GetAppPath(self):
"""Retrieve file system path to this manifest file's directory."""
@@ -51,7 +51,7 @@
return None
return manifest.getAttribute('package')
- def ParseManifest(self, app_path):
+ def _ParseManifest(self, app_path):
"""Parse AndroidManifest.xml at the specified path.
Args:
@@ -108,3 +108,20 @@
"""Saves the manifest to disk."""
self._dom.writexml(open(self._manifest_path, mode='w'), encoding='utf-8')
+
+def CreateAndroidManifest(path):
+ """Factory method for creating a AndroidManifest.
+
+ Args:
+ path: the directory for the manifest file
+
+ Return:
+ the AndroidManifest or None if there was no file present
+ """
+ manifest_path = os.path.join(path, AndroidManifest.FILENAME)
+ if os.path.isfile(manifest_path):
+ manifest = AndroidManifest()
+ manifest._ParseManifest(path)
+ return manifest
+ else:
+ return None
diff --git a/testrunner/test_defs/instrumentation_test.py b/testrunner/test_defs/instrumentation_test.py
index 64182a4..6f82456 100644
--- a/testrunner/test_defs/instrumentation_test.py
+++ b/testrunner/test_defs/instrumentation_test.py
@@ -199,6 +199,17 @@
(total_count, fail_count, error_count))
+def HasInstrumentationTest(path):
+ """Determine if given path defines an instrumentation test.
+
+ Args:
+ path: file system path to instrumentation test.
+ """
+ manifest_parser = android_manifest.CreateAndroidManifest(path)
+ if manifest_parser:
+ return manifest_parser.GetInstrumentationNames()
+ return False
+
class InstrumentationTestFactory(test_suite.AbstractTestFactory):
"""A factory for creating InstrumentationTestSuites"""
diff --git a/testrunner/test_defs/test_walker.py b/testrunner/test_defs/test_walker.py
index de93c80..2989125 100755
--- a/testrunner/test_defs/test_walker.py
+++ b/testrunner/test_defs/test_walker.py
@@ -191,7 +191,7 @@
"""
if android_mk_parser.HasGTest():
return gtest.GTestFactory(path, upstream_build_path=upstream_build_path)
- elif android_mk_parser.HasJavaLibrary('android.test.runner'):
+ elif instrumentation_test.HasInstrumentationTest(path):
return instrumentation_test.InstrumentationTestFactory(path,
upstream_build_path=upstream_build_path)
else: