summaryrefslogtreecommitdiff
path: root/Cython/Compiler/ModuleNode.py
diff options
context:
space:
mode:
authorStefan Behnel <stefan_ml@behnel.de>2015-02-26 22:34:21 +0100
committerStefan Behnel <stefan_ml@behnel.de>2015-02-26 22:34:21 +0100
commit384cc660f5c7958524b8839ba24099fdbc6eaffd (patch)
treefa197e119a4f2a5104cf54c83d9dbe5bdaf25f28 /Cython/Compiler/ModuleNode.py
parentd7e8796b771a5b7db825dd66b6c38bb093cc7830 (diff)
downloadcython-384cc660f5c7958524b8839ba24099fdbc6eaffd.tar.gz
integrate coverage report into annotated HTML source page
Diffstat (limited to 'Cython/Compiler/ModuleNode.py')
-rw-r--r--Cython/Compiler/ModuleNode.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/Cython/Compiler/ModuleNode.py b/Cython/Compiler/ModuleNode.py
index b75912b03..f09313c81 100644
--- a/Cython/Compiler/ModuleNode.py
+++ b/Cython/Compiler/ModuleNode.py
@@ -359,11 +359,24 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
if options.gdb_debug:
self._serialize_lineno_map(env, rootwriter)
if Options.annotate or options.annotate:
- self._generate_annotations(rootwriter, result)
+ self._generate_annotations(rootwriter, result, options)
- def _generate_annotations(self, rootwriter, result):
+ def _generate_annotations(self, rootwriter, result, options):
self.annotate(rootwriter)
- rootwriter.save_annotation(result.main_source_file, result.c_file)
+
+ coverage_xml_filename = Options.annotate_coverage_xml or options.annotate_coverage_xml
+ if coverage_xml_filename and os.path.exists(coverage_xml_filename):
+ try:
+ import xml.etree.cElementTree as ET
+ except ImportError:
+ import xml.etree.ElementTree as ET
+ coverage_xml = ET.parse(coverage_xml_filename).getroot()
+ for el in coverage_xml.getiterator():
+ el.tail = None # save some memory
+ else:
+ coverage_xml = None
+
+ rootwriter.save_annotation(result.main_source_file, result.c_file, coverage_xml=coverage_xml)
# if we included files, additionally generate one annotation file for each
if not self.scope.included_files:
@@ -387,7 +400,7 @@ class ModuleNode(Nodes.Node, Nodes.BlockNode):
import errno
if e.errno != errno.EEXIST:
raise
- rootwriter.save_annotation(source_file, target_file)
+ rootwriter.save_annotation(source_file, target_file, coverage_xml=coverage_xml)
def _serialize_lineno_map(self, env, ccodewriter):
tb = env.context.gdb_debug_outputwriter