Index: build/android/emma_coverage_stats.py |
diff --git a/build/android/emma_coverage_stats.py b/build/android/emma_coverage_stats.py |
index 89a28982243fbb64932933202a7ef182bf5c69a4..d882cea6e68cdc07da02e0dbf6be2b8437a78b26 100755 |
--- a/build/android/emma_coverage_stats.py |
+++ b/build/android/emma_coverage_stats.py |
@@ -7,7 +7,7 @@ |
Usage: |
- build/android/coverage.py -v --out <output file path> --emma-dir |
+ build/android/emma_coverage_stats.py -v --out <output file path> --emma-dir |
<EMMA file directory> --lines-for-coverage-file |
<path to file containing lines for coverage> |
@@ -256,8 +256,12 @@ class _EmmaCoverageStats(object): |
""" |
file_coverage = {} |
for file_path, line_numbers in lines_for_coverage.iteritems(): |
- file_coverage[file_path] = self.GetCoverageDictForFile( |
- file_path, line_numbers) |
+ file_coverage_dict = self.GetCoverageDictForFile(file_path, line_numbers) |
+ if file_coverage_dict: |
+ file_coverage[file_path] = file_coverage_dict |
+ else: |
+ logging.warning( |
+ 'No code coverage data for %s, skipping.', file_path) |
covered_statuses = [s['incremental'] for s in file_coverage.itervalues()] |
num_covered_lines = sum(s['covered'] for s in covered_statuses) |
@@ -285,7 +289,10 @@ class _EmmaCoverageStats(object): |
A dict containing absolute, incremental, and line by line coverage for |
a file. |
""" |
- total_line_coverage = self._GetLineCoverageForFile(file_path) |
+ if file_path not in self._source_to_emma: |
+ return None |
+ emma_file = self._source_to_emma[file_path] |
+ total_line_coverage = self._emma_parser.GetLineCoverage(emma_file) |
incremental_line_coverage = [line for line in total_line_coverage |
if line.lineno in line_numbers] |
line_by_line_coverage = [ |
@@ -338,24 +345,6 @@ class _EmmaCoverageStats(object): |
total_lines = sum(covered_status_totals.values()) |
return total_covered, total_lines |
- def _GetLineCoverageForFile(self, file_path): |
- """Gets a list of LineCoverage objects corresponding to the given file path. |
- |
- Args: |
- file_path: String representing the path to the Java source file. |
- |
- Returns: |
- A list of LineCoverage objects, or None if there is no EMMA file |
- for the given Java source file. |
- """ |
- if file_path in self._source_to_emma: |
- emma_file = self._source_to_emma[file_path] |
- return self._emma_parser.GetLineCoverage(emma_file) |
- else: |
- logging.warning( |
- 'No code coverage data for %s, skipping.', file_path) |
- return None |
- |
def _GetSourceFileToEmmaFileDict(self, files): |
"""Gets a dict used to correlate Java source files with EMMA HTML files. |
@@ -388,8 +377,9 @@ class _EmmaCoverageStats(object): |
package_to_emma = self._emma_parser.GetPackageNameToEmmaFileDict() |
# Finally, we have a dict mapping Java file paths to EMMA report files. |
# Example: /usr/code/file.java -> out/coverage/1a.html. |
- source_to_emma = {source: package_to_emma.get(package) |
- for source, package in source_to_package.iteritems()} |
+ source_to_emma = {source: package_to_emma[package] |
+ for source, package in source_to_package.iteritems() |
+ if package in package_to_emma} |
return source_to_emma |
@staticmethod |
@@ -447,6 +437,7 @@ def GenerateCoverageReport(line_coverage_file, out_file_path, coverage_dir): |
""" |
with open(line_coverage_file) as f: |
potential_files_for_coverage = json.load(f) |
+ |
files_for_coverage = {f: lines |
for f, lines in potential_files_for_coverage.iteritems() |
if _EmmaCoverageStats.NeedsCoverage(f)} |