SVN: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py moving setup and teardown of coverage analysis and profiling to the

Christian Theune <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <20080503185039.1072139989__3135.74687247655$1209840739$gmane$org@mail.zope.org>
Log message for revision 86266:
  moving setup and teardown of coverage analysis and profiling to the
  corresponding methods
  

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

-=-
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 18:44:37 UTC (rev 86265)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py	2008-05-03 18:50:38 UTC (rev 86266)
@@ -89,21 +89,6 @@
         # to make tests of the test runner work properly. :)
         pdb.set_trace = real_pdb_set_trace
 
-        if (self.options.profile
-            and sys.version_info[:3] <= (2,4,1)
-            and __debug__):
-            self.options.output.error(
-                'Because of a bug in Python < 2.4.1, profiling '
-                'during tests requires the -O option be passed to '
-                'Python (not the test runner).')
-            sys.exit()
-
-        if self.options.coverage:
-            tracer = TestTrace(test_dirs(self.options, {}), trace=False, count=True)
-            tracer.start()
-        else:
-            tracer = None
-
         if self.options.profile:
             prof_prefix = 'tests_profile.'
             prof_suffix = '.prof'
@@ -127,8 +112,8 @@
             except EndRun:
                 failed = True
         finally:
-            if tracer:
-                tracer.stop()
+            if self.tracer:
+                self.tracer.stop()
             if self.options.profile:
                 profiler.disable()
                 profiler.finish()
@@ -137,20 +122,13 @@
                 # attempt to unlink a still-open file.
                 os.close(oshandle)
 
-        self.shutdown_features()
-
         if self.options.profile and not self.options.resume_layer:
             stats = profiler.loadStats(prof_glob)
             stats.sort_stats('cumulative', 'calls')
             self.options.output.profiler_stats(stats)
 
-        if tracer:
-            coverdir = os.path.join(os.getcwd(), self.options.coverage)
-            r = tracer.results()
-            r.write_results(summary=True, coverdir=coverdir)
+        self.shutdown_features()
 
-        doctest.set_unittest_reportflags(self.old_reporting_flags)
-
         if failed and self.options.exitwithstatus:
             sys.exit(1)
 
@@ -192,7 +170,24 @@
         # Control reporting flags during run
         self.old_reporting_flags = doctest.set_unittest_reportflags(0)
 
+        # Set up code coverage analysis
+        if self.options.coverage:
+            self.tracer = TestTrace(test_dirs(self.options, {}), trace=False, count=True)
+            self.tracer.start()
+        else:
+            self.tracer = None
 
+        # Setup profiling
+        if (self.options.profile
+            and sys.version_info[:3] <= (2,4,1)
+            and __debug__):
+            self.options.output.error(
+                'Because of a bug in Python < 2.4.1, profiling '
+                'during tests requires the -O option be passed to '
+                'Python (not the test runner).')
+            sys.exit()
+
+
     def find_tests(self):
         pass
 
@@ -375,9 +370,15 @@
         return bool(import_errors or failures or errors)
 
     def shutdown_features(self):
-        pass
+        if self.tracer:
+            coverdir = os.path.join(os.getcwd(), self.options.coverage)
+            r = self.tracer.results()
+            r.write_results(summary=True, coverdir=coverdir)
 
+        doctest.set_unittest_reportflags(self.old_reporting_flags)
 
+
+
 def run_tests(options, tests, name, failures, errors):
     repeat = options.repeat or 1
     repeat_range = iter(range(repeat))
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.