Add support for generating coverage per test suite size to runtest.
This commit is contained in:
@@ -86,7 +86,8 @@ class CoverageGenerator(object):
|
|||||||
|
|
||||||
def ExtractReport(self, test_suite,
|
def ExtractReport(self, test_suite,
|
||||||
device_coverage_path,
|
device_coverage_path,
|
||||||
output_path=None):
|
output_path=None,
|
||||||
|
test_qualifier=None):
|
||||||
"""Extract runtime coverage data and generate code coverage report.
|
"""Extract runtime coverage data and generate code coverage report.
|
||||||
|
|
||||||
Assumes test has just been executed.
|
Assumes test has just been executed.
|
||||||
@@ -94,25 +95,30 @@ class CoverageGenerator(object):
|
|||||||
test_suite: TestSuite to generate coverage data for
|
test_suite: TestSuite to generate coverage data for
|
||||||
device_coverage_path: location of coverage file on device
|
device_coverage_path: location of coverage file on device
|
||||||
output_path: path to place output files in. If None will use
|
output_path: path to place output files in. If None will use
|
||||||
<android_root_path>/<_COVERAGE_REPORT_PATH>/<target>/<test>
|
<android_root_path>/<_COVERAGE_REPORT_PATH>/<target>/<test[-qualifier]>
|
||||||
|
test_qualifier: designates mode test was run with. e.g size=small.
|
||||||
|
If not None, this will be used to customize output_path as shown above.
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
absolute file path string of generated html report file.
|
absolute file path string of generated html report file.
|
||||||
"""
|
"""
|
||||||
if output_path is None:
|
if output_path is None:
|
||||||
|
report_name = test_suite.GetName()
|
||||||
|
if test_qualifier:
|
||||||
|
report_name = report_name + "-" + test_qualifier
|
||||||
output_path = os.path.join(self._root_path,
|
output_path = os.path.join(self._root_path,
|
||||||
self._COVERAGE_REPORT_PATH,
|
self._COVERAGE_REPORT_PATH,
|
||||||
test_suite.GetTargetName(),
|
test_suite.GetTargetName(),
|
||||||
test_suite.GetName())
|
report_name)
|
||||||
|
|
||||||
coverage_local_name = "%s.%s" % (test_suite.GetName(),
|
coverage_local_name = "%s.%s" % (report_name,
|
||||||
self._TEST_COVERAGE_EXT)
|
self._TEST_COVERAGE_EXT)
|
||||||
coverage_local_path = os.path.join(output_path,
|
coverage_local_path = os.path.join(output_path,
|
||||||
coverage_local_name)
|
coverage_local_name)
|
||||||
if self._adb.Pull(device_coverage_path, coverage_local_path):
|
if self._adb.Pull(device_coverage_path, coverage_local_path):
|
||||||
|
|
||||||
report_path = os.path.join(output_path,
|
report_path = os.path.join(output_path,
|
||||||
test_suite.GetName())
|
report_name)
|
||||||
target = self._targets_manifest.GetTarget(test_suite.GetTargetName())
|
target = self._targets_manifest.GetTarget(test_suite.GetTargetName())
|
||||||
if target is None:
|
if target is None:
|
||||||
msg = ["Error: test %s references undefined target %s."
|
msg = ["Error: test %s references undefined target %s."
|
||||||
|
|||||||
@@ -160,7 +160,8 @@ class InstrumentationTestSuite(test_suite.AbstractTestSuite):
|
|||||||
logger.Log("Error: could not find coverage data on device")
|
logger.Log("Error: could not find coverage data on device")
|
||||||
return
|
return
|
||||||
|
|
||||||
coverage_file = coverage_gen.ExtractReport(self, device_coverage_path)
|
coverage_file = coverage_gen.ExtractReport(
|
||||||
|
self, device_coverage_path, test_qualifier=options.test_size)
|
||||||
if coverage_file is not None:
|
if coverage_file is not None:
|
||||||
logger.Log("Coverage report generated at %s" % coverage_file)
|
logger.Log("Coverage report generated at %s" % coverage_file)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user