SVN: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/ Factored out doctest flag setup into its own feature.

Christian Theune <[email protected]>
Newsgroups gmane.comp.web.zope.zope3.cvs
Message-ID <[email protected]>
Log message for revision 86339:
  Factored out doctest flag setup into its own feature.
  

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

-=-
Added: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/doctest.py
===================================================================
--- zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/doctest.py	                        (rev 0)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/doctest.py	2008-05-04 11:51:12 UTC (rev 86339)
@@ -0,0 +1,52 @@
+##############################################################################
+#
+# Copyright (c) 2004-2008 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL).  A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Doc test support for the test runner.
+
+$Id: __init__.py 86232 2008-05-03 15:09:33Z ctheune $
+"""
+
+from zope.testing import doctest
+import zope.testing.testrunner.feature
+
+
+class DocTest(zope.testing.testrunner.feature.Feature):
+
+    active = True
+
+    def global_setup(self):
+        options = self.runner.options
+
+        self.old_reporting_flags = doctest.set_unittest_reportflags(0)
+
+        reporting_flags = 0
+        if options.ndiff:
+            reporting_flags = doctest.REPORT_NDIFF
+        if options.udiff:
+            if reporting_flags:
+                output.error("Can only give one of --ndiff, --udiff, or --cdiff")
+                sys.exit(1)
+            reporting_flags = doctest.REPORT_UDIFF
+        if options.cdiff:
+            if reporting_flags:
+                output.error("Can only give one of --ndiff, --udiff, or --cdiff")
+                sys.exit(1)
+            reporting_flags = doctest.REPORT_CDIFF
+        if options.report_only_first_failure:
+            reporting_flags |= doctest.REPORT_ONLY_FIRST_FAILURE
+
+        if reporting_flags:
+            doctest.set_unittest_reportflags(reporting_flags)
+
+    def global_shutdown(self):
+        doctest.set_unittest_reportflags(self.old_reporting_flags)


Property changes on: zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/doctest.py
___________________________________________________________________
Name: svn:eol-style
   + native

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-04 11:04:44 UTC (rev 86338)
+++ zope.testing/branches/ctheune-cleanup/src/zope/testing/testrunner/runner.py	2008-05-04 11:51:12 UTC (rev 86339)
@@ -35,12 +35,15 @@
 from zope.testing.testrunner.find import find_tests, test_dirs
 from zope.testing.testrunner.find import StartUpFailure, import_name
 from zope.testing.testrunner.find import name_from_layer, _layer_name_cache
-from zope.testing.testrunner import coverage
 from zope.testing.testrunner.refcount import TrackRefs
 from zope.testing.testrunner.options import get_options
+import zope.testing.testrunner.coverage
+import zope.testing.testrunner.doctest
 
+
 real_pdb_set_trace = pdb.set_trace
 
+
 PYREFCOUNT_PATTERN = re.compile('\[[0-9]+ refs\]')
 
 
@@ -167,7 +170,8 @@
         # XXX I moved this here mechanically.
         self.test_directories = test_dirs(self.options, {})
 
-        self.features.append(coverage.Coverage(self))
+        self.features.append(zope.testing.testrunner.coverage.Coverage(self))
+        self.features.append(zope.testing.testrunner.doctest.DocTest(self))
 
         # Remove all features that aren't activated
         self.features = [f for f in self.features if f.active]
@@ -182,9 +186,6 @@
         # It's not at all clear that the test runner should be doing this.
         configure_logging()
 
-        # Control reporting flags during run
-        self.old_reporting_flags = doctest.set_unittest_reportflags(0)
-
         # Setup profiling
         if (self.options.profile
             and sys.version_info[:3] <= (2,4,1)
@@ -235,29 +236,7 @@
                 new_flags |= getattr(gc, op)
             gc.set_debug(new_flags)
 
-        # Set up doctest support
-        self.old_reporting_flags = doctest.set_unittest_reportflags(0)
-        reporting_flags = 0
-        if self.options.ndiff:
-            reporting_flags = doctest.REPORT_NDIFF
-        if self.options.udiff:
-            if reporting_flags:
-                output.error("Can only give one of --ndiff, --udiff, or --cdiff")
-                sys.exit(1)
-            reporting_flags = doctest.REPORT_UDIFF
-        if self.options.cdiff:
-            if reporting_flags:
-                output.error("Can only give one of --ndiff, --udiff, or --cdiff")
-                sys.exit(1)
-            reporting_flags = doctest.REPORT_CDIFF
-        if self.options.report_only_first_failure:
-            reporting_flags |= doctest.REPORT_ONLY_FIRST_FAILURE
 
-        if reporting_flags:
-            doctest.set_unittest_reportflags(reporting_flags)
-        else:
-            doctest.set_unittest_reportflags(self.old_reporting_flags)
-
         # Set up time measurement
         def start_time_recording():
             self.start_time = time.time()
@@ -373,8 +352,6 @@
         self.failed = bool(self.import_errors or self.failures or self.errors)
 
     def shutdown_features(self):
-        doctest.set_unittest_reportflags(self.old_reporting_flags)
-
         if self.options.gc_option:
             gc.set_debug(self.old_flags)
 
@@ -391,8 +368,6 @@
                 self.profiler_stats = self.profiler.loadStats(self.prof_glob)
                 self.profiler_stats.sort_stats('cumulative', 'calls')
 
-        doctest.set_unittest_reportflags(self.old_reporting_flags)
-
     def report(self):
         if self.options.resume_layer:
             sys.stdout.close()
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.