[Zope-Checkins] CVS: Zope/utilities - testrunner.py:1.15

Jeffrey P Shell jeffrey@zope.com
Wed, 15 Aug 2001 10:50:42 -0400


Update of /cvs-repository/Zope/utilities
In directory cvs.zope.org:/tmp/cvs-serv13162

Modified Files:
	testrunner.py 
Log Message:
Added a final report of the number of overall failures and/or errors.


=== Zope/utilities/testrunner.py 1.14 => 1.15 ===
     """Test suite runner"""
 
-    def __init__(self, basepath, verbosity=VERBOSE):
+    def __init__(self, basepath, verbosity=VERBOSE, results=[]):
         # initialize python path
         self.basepath=path=basepath
         self.verbosity = verbosity
+        self.results = results
         pjoin=os.path.join
         if sys.platform == 'win32':
             sys.path.insert(0, pjoin(path, 'lib/python'))
@@ -79,7 +80,7 @@
 
     def runSuite(self, suite):
         runner=unittest.TextTestRunner(verbosity=self.verbosity)
-        runner.run(suite)
+        self.results.append(runner.run(suite))
 
     def report(self, message):
         print message
@@ -204,6 +205,22 @@
         testrunner.runPath(pathname)
     elif filename:
         testrunner.runFile(filename)
+
+
+    ## Report overall errors / failures if there were any
+    fails = reduce(lambda x, y: x + len(y.failures), testrunner.results, 0)
+    errs  = reduce(lambda x, y: x + len(y.errors), testrunner.results, 0)
+    if fails or errs:
+        msg = '=' * 70
+        msg += "\nOVERALL FAILED ("
+        if fails:
+            msg += "total failures=%d" % fails
+        if errs:
+            if fails: msg += ", "
+            msg += "total errors=%d" % errs
+        msg += ")"
+        err_exit(msg, 1)
+        
     sys.exit(0)