SVN: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/ push EndRun exception a bit down to make the `run` method a bit more

Christian Theune <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <20080503204018.7C34339993__26124.0546395586$1209847276$gmane$org@mail.zope.org>
Log message for revision 86294:
  push EndRun exception a bit down to make the `run` method a bit more
  straight-forward
  

Changed:
  U   zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/__init__.py
  U   zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py

-=-
Modified: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/__init__.py
===================================================================
--- zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/__init__.py	2008-05-03 20:36:57 UTC (rev 86293)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/__init__.py	2008-05-03 20:40:18 UTC (rev 86294)
@@ -27,10 +27,10 @@
     # This function is here to make the whole test runner compatible before
     # the large refactoring.
     runner = Runner(defaults, args)
-    failed = runner.run()
-    if failed and runner.options.exitwithstatus:
+    runner.run()
+    if runner.failed and runner.options.exitwithstatus:
         sys.exit(1)
-    return failed
+    return runner.failed
 
 
 ###############################################################################

Modified: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py
===================================================================
--- zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py	2008-05-03 20:36:57 UTC (rev 86293)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py	2008-05-03 20:40:18 UTC (rev 86294)
@@ -76,6 +76,7 @@
         self.args = args
         self.found_suites = found_suites
         self.options = options
+        self.failed = True
 
         self.late_initializers = []
         self.early_shutdown = []
@@ -94,18 +95,13 @@
             init()
 
         try:
-            try:
-                self.find_tests()
-                failed = self.run_tests()
-            except EndRun:
-                failed = True
+            self.find_tests()
+            self.run_tests()
         finally:
             for shutdown in self.early_shutdown:
                 shutdown()
             self.shutdown_features()
 
-        return failed
-
     def configure(self):
         if self.args is None:
             self.args = sys.argv[:]
@@ -286,7 +282,11 @@
                     else:
                         output.info("Running unit tests:")
                         nlayers += 1
-                        ran += run_tests(options, tests, 'unit', failures, errors)
+                        try:
+                            ran += run_tests(options, tests, 'unit', failures, errors)
+                        except EndRun:
+                            self.failed = True
+                            return
 
         setup_layers = {}
 
@@ -308,7 +308,8 @@
         if options.list_tests:
             for layer_name, layer, tests in layers_to_run:
                 output.list_of_tests(tests, layer_name)
-            return False
+            self.failed = False
+            return
 
         start_time = time.time()
 
@@ -317,6 +318,9 @@
             try:
                 ran += run_layer(options, layer_name, layer, tests,
                                  setup_layers, failures, errors)
+            except EndRun:
+                self.failed = True
+                return
             except CanNotTearDown:
                 setup_layers = None
                 if not options.resume_layer:
@@ -358,7 +362,7 @@
         if options.gc:
             gc.set_threshold(*old_threshold)
 
-        return bool(import_errors or failures or errors)
+        self.failed = bool(import_errors or failures or errors)
 
     def shutdown_features(self):
         if self.options.profile:
@@ -505,6 +509,7 @@
         return run_tests(options, tests, layer_name, failures, errors)
 
 class SetUpLayerFailure(unittest.TestCase):
+
     def runTest(self):
         "Layer set up failure."
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.