diff options
author | Tim Peters <tim.peters@gmail.com> | 2004-08-30 16:19:24 (GMT) |
---|---|---|
committer | Tim Peters <tim.peters@gmail.com> | 2004-08-30 16:19:24 (GMT) |
commit | 38330fe5ef3c0227d2267774b9b95352d290e9d7 (patch) | |
tree | 05fac325926c66104c37f2a65c41f80b625e6e23 /Lib | |
parent | ed047486f5dd79cb594ef100362fe04ab1ef3e0a (diff) | |
download | cpython-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.py | 47 |
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 |