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.
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 @@
 #                            +---------+
 
 # 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