From fc38bf8526cb1717968a1958439da5fae4768375 Mon Sep 17 00:00:00 2001 From: Ned Batchelder Date: Wed, 19 Dec 2012 21:20:29 -0500 Subject: Retro-fit onto 2.3 and 2.4 again. --- coverage/backward.py | 16 ++++++++++++++++ coverage/control.py | 11 ++++++----- coverage/xmlreport.py | 4 ++-- 3 files changed, 24 insertions(+), 7 deletions(-) (limited to 'coverage') 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]) -- cgit v1.2.1