summaryrefslogtreecommitdiffstats
path: root/Lib
diff options
context:
space:
mode:
authorTim Peters <tim.peters@gmail.com>2004-08-30 16:19:24 (GMT)
committerTim Peters <tim.peters@gmail.com>2004-08-30 16:19:24 (GMT)
commit38330fe5ef3c0227d2267774b9b95352d290e9d7 (patch)
tree05fac325926c66104c37f2a65c41f80b625e6e23 /Lib
parented047486f5dd79cb594ef100362fe04ab1ef3e0a (diff)
downloadcpython-38330fe5ef3c0227d2267774b9b95352d290e9d7.zip
cpython-38330fe5ef3c0227d2267774b9b95352d290e9d7.tar.gz
cpython-38330fe5ef3c0227d2267774b9b95352d290e9d7.tar.bz2
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.
Diffstat (limited to 'Lib')
-rw-r--r--Lib/doctest.py47
1 files changed, 19 insertions, 28 deletions
diff --git a/Lib/doctest.py b/Lib/doctest.py
index 988707b..0a5b2da 100644
--- a/Lib/doctest.py
+++ b/Lib/doctest.py
@@ -248,6 +248,7 @@ real_pdb_set_trace = pdb.set_trace
# +---------+
# Option constants.
+
OPTIONFLAGS_BY_NAME = {}
def register_optionflag(name):
flag = 1 << len(OPTIONFLAGS_BY_NAME)
@@ -258,11 +259,22 @@ DONT_ACCEPT_TRUE_FOR_1 = register_optionflag('DONT_ACCEPT_TRUE_FOR_1')
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 @@ class Tester:
######################################################################
_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 @@ def set_unittest_reportflags(flags):
>>> 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 @@ class DocTestCase(unittest.TestCase):
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