diff options
author | Stefan Behnel <stefan_ml@behnel.de> | 2015-02-26 22:34:21 +0100 |
---|---|---|
committer | Stefan Behnel <stefan_ml@behnel.de> | 2015-02-26 22:34:21 +0100 |
commit | 384cc660f5c7958524b8839ba24099fdbc6eaffd (patch) | |
tree | fa197e119a4f2a5104cf54c83d9dbe5bdaf25f28 /Cython/Compiler/ModuleNode.py | |
parent | d7e8796b771a5b7db825dd66b6c38bb093cc7830 (diff) | |
download | cython-384cc660f5c7958524b8839ba24099fdbc6eaffd.tar.gz |
integrate coverage report into annotated HTML source page
Diffstat (limited to 'Cython/Compiler/ModuleNode.py')
-rw-r--r-- | Cython/Compiler/ModuleNode.py | 21 |
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 |