diff options
Diffstat (limited to 'coverage')
-rw-r--r-- | coverage/backward.py | 16 | ||||
-rw-r--r-- | coverage/control.py | 11 | ||||
-rw-r--r-- | coverage/xmlreport.py | 4 |
3 files changed, 24 insertions, 7 deletions
diff --git a/coverage/backward.py b/coverage/backward.py index 6347501a..2c015af2 100644 --- a/coverage/backward.py +++ b/coverage/backward.py @@ -24,6 +24,22 @@ except NameError: lst.sort() return lst +# rpartition is new in 2.5 +try: + "".rpartition +except AttributeError: + def rpartition(s, sep): + """Implement s.rpartition(sep) for old Pythons.""" + i = s.rfind(sep) + if i == -1: + return ('', '', s) + else: + return (s[:i], sep, s[i+len(sep):]) +else: + def rpartition(s, sep): + """A common interface for new Pythons.""" + return s.rpartition(sep) + # Pythons 2 and 3 differ on where to get StringIO try: from cStringIO import StringIO diff --git a/coverage/control.py b/coverage/control.py index 80495ef4..dafd0143 100644 --- a/coverage/control.py +++ b/coverage/control.py @@ -642,11 +642,12 @@ class coverage(object): outfile = open(self.config.xml_output, "w") file_to_close = outfile try: - reporter = XmlReporter(self, self.config) - return reporter.report(morfs, outfile=outfile) - except CoverageException: - delete_file = True - raise + try: + reporter = XmlReporter(self, self.config) + return reporter.report(morfs, outfile=outfile) + except CoverageException: + delete_file = True + raise finally: if file_to_close: file_to_close.close() diff --git a/coverage/xmlreport.py b/coverage/xmlreport.py index 4344488d..301bc865 100644 --- a/coverage/xmlreport.py +++ b/coverage/xmlreport.py @@ -4,7 +4,7 @@ import os, sys, time import xml.dom.minidom from coverage import __url__, __version__ -from coverage.backward import sorted # pylint: disable=W0622 +from coverage.backward import sorted, rpartition # pylint: disable=W0622 from coverage.report import Reporter def rate(hit, num): @@ -92,7 +92,7 @@ class XmlReporter(Reporter): # Create the 'lines' and 'package' XML elements, which # are populated later. Note that a package == a directory. - package_name = cu.name.rpartition(".")[0] + package_name = rpartition(cu.name, ".")[0] className = cu.name package = self.packages.setdefault(package_name, [{}, 0, 0, 0, 0]) |