Add skipped test support (for python 2.6 compat)
authorZac Medico <zmedico@gentoo.org>
Fri, 26 Aug 2011 06:07:39 +0000 (23:07 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 26 Aug 2011 06:07:39 +0000 (23:07 -0700)
Python supports skipped tests since 2.7, but we'll implement support
ourselves for python 2.6 compatibility. This is a simple extension of
the todo support that we have already implemented.

pym/portage/tests/__init__.py

index dddf3861f400f42d8a60b2d4d5864dda6e04578e..6f21d10bd43414bced7e7f0d00bfe75c517e6763 100644 (file)
@@ -109,6 +109,7 @@ class TextTestResult(_TextTestResult):
        def __init__(self, stream, descriptions, verbosity):
                super(TextTestResult, self).__init__(stream, descriptions, verbosity)
                self.todoed = []
+               self.portage_skipped = []
 
        def addTodo(self, test, info):
                self.todoed.append((test,info))
@@ -117,12 +118,20 @@ class TextTestResult(_TextTestResult):
                elif self.dots:
                        self.stream.write(".")
 
+       def addPortageSkip(self, test, info):
+               self.portage_skipped.append((test,info))
+               if self.showAll:
+                       self.stream.writeln("SKIP")
+               elif self.dots:
+                       self.stream.write(".")
+
        def printErrors(self):
                if self.dots or self.showAll:
                        self.stream.writeln()
                        self.printErrorList('ERROR', self.errors)
                        self.printErrorList('FAIL', self.failures)
                        self.printErrorList('TODO', self.todoed)
+                       self.printErrorList('SKIP', self.portage_skipped)
 
 class TestCase(unittest.TestCase):
        """
@@ -135,6 +144,7 @@ class TestCase(unittest.TestCase):
        def __init__(self, *pargs, **kwargs):
                unittest.TestCase.__init__(self, *pargs, **kwargs)
                self.todo = False
+               self.portage_skip = None
 
        def defaultTestResult(self):
                return TextTestResult()
@@ -158,7 +168,13 @@ class TestCase(unittest.TestCase):
                                testMethod()
                                ok = True
                        except self.failureException:
-                               if self.todo:
+                               if self.portage_skip is not None:
+                                       if self.portage_skip is True:
+                                               result.addPortageSkip(self, "%s: SKIP" % testMethod)
+                                       else:
+                                               result.addPortageSkip(self, "%s: SKIP: %s" %
+                                                       (testMethod, self.portage_skip))
+                               elif self.todo:
                                        result.addTodo(self,"%s: TODO" % testMethod)
                                else:
                                        result.addFailure(self, sys.exc_info())