[Python-checkins] python/dist/src/Lib doctest.py,1.96,1.97

tim_one at users.sourceforge.net tim_one at users.sourceforge.net
Mon Aug 30 18:19:27 CEST 2004


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31048/Lib

Modified Files:
	doctest.py 
Log Message:
The distinction between comparison flags and reporting flags isn't unique
to unittest, so make it official:  new module constants COMPARISON_FLAGS
and REPORTING_FLAGS, which are bitmasks or'ing together the relevant
individual option flags.

set_unittest_reportflags():  Reworked to use REPORTING_FLAGS, and
simplified overly complicated flag logic.

class FakeModule:  Removed this; neither documented nor used.


Index: doctest.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/doctest.py,v
retrieving revision 1.96
retrieving revision 1.97
diff -u -d -r1.96 -r1.97
--- doctest.py	29 Aug 2004 00:38:16 -0000	1.96
+++ doctest.py	30 Aug 2004 16:19:24 -0000	1.97
@@ -248,6 +248,7 @@
 #                            +---------+
 
 # Option constants.
+
 OPTIONFLAGS_BY_NAME = {}
 def register_optionflag(name):
     flag = 1 << len(OPTIONFLAGS_BY_NAME)
@@ -258,11 +259,22 @@
 DONT_ACCEPT_BLANKLINE = register_optionflag('DONT_ACCEPT_BLANKLINE')
 NORMALIZE_WHITESPACE = register_optionflag('NORMALIZE_WHITESPACE')
 ELLIPSIS = register_optionflag('ELLIPSIS')
+
+COMPARISON_FLAGS = (DONT_ACCEPT_TRUE_FOR_1 |
+                    DONT_ACCEPT_BLANKLINE |
+                    NORMALIZE_WHITESPACE |
+                    ELLIPSIS)
+
 REPORT_UDIFF = register_optionflag('REPORT_UDIFF')
 REPORT_CDIFF = register_optionflag('REPORT_CDIFF')
 REPORT_NDIFF = register_optionflag('REPORT_NDIFF')
 REPORT_ONLY_FIRST_FAILURE = register_optionflag('REPORT_ONLY_FIRST_FAILURE')
 
+REPORTING_FLAGS = (REPORT_UDIFF |
+                   REPORT_CDIFF |
+                   REPORT_NDIFF |
+                   REPORT_ONLY_FIRST_FAILURE)
+
 # Special string markers for use in `want` strings:
 BLANKLINE_MARKER = '<BLANKLINE>'
 ELLIPSIS_MARKER = '...'
@@ -1993,14 +2005,9 @@
 ######################################################################
 
 _unittest_reportflags = 0
-valid_unittest_reportflags = (
-    REPORT_CDIFF |
-    REPORT_UDIFF |
-    REPORT_NDIFF |
-    REPORT_ONLY_FIRST_FAILURE
-    )
+
 def set_unittest_reportflags(flags):
-    """Sets the unit test option flags
+    """Sets the unittest option flags.
 
     The old flag is returned so that a runner could restore the old
     value if it wished to:
@@ -2020,37 +2027,21 @@
       >>> set_unittest_reportflags(ELLIPSIS)
       Traceback (most recent call last):
       ...
-      ValueError: ('Invalid flags passed', 8)
+      ValueError: ('Only reporting flags allowed', 8)
 
       >>> set_unittest_reportflags(old) == (REPORT_NDIFF |
       ...                                   REPORT_ONLY_FIRST_FAILURE)
       True
-
     """
-
-    # extract the valid reporting flags:
-    rflags = flags & valid_unittest_reportflags
-
-    # Now remove these flags from the given flags
-    nrflags = flags ^ rflags
-
-    if nrflags:
-        raise ValueError("Invalid flags passed", flags)
-
     global _unittest_reportflags
+
+    if (flags & REPORTING_FLAGS) != flags:
+        raise ValueError("Only reporting flags allowed", flags)
     old = _unittest_reportflags
     _unittest_reportflags = flags
     return old
 
 
-class FakeModule:
-    """Fake module created by tests
-    """
-
-    def __init__(self, dict, name):
-        self.__dict__ = dict
-        self.__name__ = name
-
 class DocTestCase(unittest.TestCase):
 
     def __init__(self, test, optionflags=0, setUp=None, tearDown=None,
@@ -2083,7 +2074,7 @@
         new = StringIO()
         optionflags = self._dt_optionflags
 
-        if not (optionflags & valid_unittest_reportflags):
+        if not (optionflags & REPORTING_FLAGS):
             # The option flags don't include any reporting flags,
             # so add the default reporting flags
             optionflags |= _unittest_reportflags



More information about the Python-checkins mailing list