diff --git a/testrunner/android_manifest.py b/testrunner/android_manifest.py index 5825118f1..6e8bd6c71 100644 --- a/testrunner/android_manifest.py +++ b/testrunner/android_manifest.py @@ -34,7 +34,7 @@ class AndroidManifest(object): 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 @@ class AndroidManifest(object): 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 @@ class AndroidManifest(object): """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 64182a41a..6f82456b3 100644 --- a/testrunner/test_defs/instrumentation_test.py +++ b/testrunner/test_defs/instrumentation_test.py @@ -199,6 +199,17 @@ class InstrumentationTestSuite(test_suite.AbstractTestSuite): (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 de93c808e..298912518 100755 --- a/testrunner/test_defs/test_walker.py +++ b/testrunner/test_defs/test_walker.py @@ -191,7 +191,7 @@ class TestWalker(object): """ 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: