Fix runtest --path for tests built against SDK.
Bug 4556556 Change-Id: I3f829cae8f9fc1e64b3a44ac9e306b13b3cead7c
This commit is contained in:
@@ -34,7 +34,7 @@ class AndroidManifest(object):
|
|||||||
|
|
||||||
def __init__(self, app_path=None):
|
def __init__(self, app_path=None):
|
||||||
if app_path:
|
if app_path:
|
||||||
self.ParseManifest(app_path)
|
self._ParseManifest(app_path)
|
||||||
|
|
||||||
def GetAppPath(self):
|
def GetAppPath(self):
|
||||||
"""Retrieve file system path to this manifest file's directory."""
|
"""Retrieve file system path to this manifest file's directory."""
|
||||||
@@ -51,7 +51,7 @@ class AndroidManifest(object):
|
|||||||
return None
|
return None
|
||||||
return manifest.getAttribute('package')
|
return manifest.getAttribute('package')
|
||||||
|
|
||||||
def ParseManifest(self, app_path):
|
def _ParseManifest(self, app_path):
|
||||||
"""Parse AndroidManifest.xml at the specified path.
|
"""Parse AndroidManifest.xml at the specified path.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
@@ -108,3 +108,20 @@ class AndroidManifest(object):
|
|||||||
"""Saves the manifest to disk."""
|
"""Saves the manifest to disk."""
|
||||||
self._dom.writexml(open(self._manifest_path, mode='w'), encoding='utf-8')
|
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
|
||||||
|
|||||||
@@ -199,6 +199,17 @@ class InstrumentationTestSuite(test_suite.AbstractTestSuite):
|
|||||||
(total_count, fail_count, error_count))
|
(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):
|
class InstrumentationTestFactory(test_suite.AbstractTestFactory):
|
||||||
"""A factory for creating InstrumentationTestSuites"""
|
"""A factory for creating InstrumentationTestSuites"""
|
||||||
|
|
||||||
|
|||||||
@@ -191,7 +191,7 @@ class TestWalker(object):
|
|||||||
"""
|
"""
|
||||||
if android_mk_parser.HasGTest():
|
if android_mk_parser.HasGTest():
|
||||||
return gtest.GTestFactory(path, upstream_build_path=upstream_build_path)
|
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,
|
return instrumentation_test.InstrumentationTestFactory(path,
|
||||||
upstream_build_path=upstream_build_path)
|
upstream_build_path=upstream_build_path)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user