Commit 8d7ddec1 authored by Ray Ashman Jr's avatar Ray Ashman Jr
Browse files

Revert change to django/test/_doctest.py

parent e2ae8b04
Loading
Loading
Loading
Loading
+9 −46
Original line number Diff line number Diff line
@@ -144,8 +144,6 @@ if sys.platform.startswith('java'):
# Option constants.

OPTIONFLAGS_BY_NAME = {}


def register_optionflag(name):
    # Create a new flag unless `name` is already known.
    return OPTIONFLAGS_BY_NAME.setdefault(name, 1 << len(OPTIONFLAGS_BY_NAME))
@@ -196,7 +194,6 @@ ELLIPSIS_MARKER = '...'
## 1. Utility Functions
######################################################################


def _extract_future_flags(globs):
    """
    Return the compiler-flags associated with the future features that
@@ -209,7 +206,6 @@ def _extract_future_flags(globs):
            flags |= feature.compiler_flag
    return flags


def _normalize_module(module, depth=2):
    """
    Return the module specified by `module`.  In particular:
@@ -229,7 +225,6 @@ def _normalize_module(module, depth=2):
    else:
        raise TypeError("Expected a module, string, or None")


def _load_testfile(filename, package, module_relative):
    if module_relative:
        package = _normalize_module(package, 3)
@@ -243,7 +238,6 @@ def _load_testfile(filename, package, module_relative):
    with open(filename) as fp:
        return fp.read(), filename


def _indent(s, indent=4):
    """
    Add the given number of space characters to the beginning every
@@ -252,7 +246,6 @@ def _indent(s, indent=4):
    # This regexp matches the start of non-blank lines:
    return re.sub('(?m)^(?!$)', indent*' ', s)


def _exception_traceback(exc_info):
    """
    Return a string containing a traceback message for the given
@@ -264,7 +257,6 @@ def _exception_traceback(exc_info):
    traceback.print_exception(exc_type, exc_val, exc_tb, file=excout)
    return excout.getvalue()


# Override some StringIO methods.
class _SpoofOut(StringIO):
    def getvalue(self):
@@ -285,7 +277,6 @@ class _SpoofOut(StringIO):
        if hasattr(self, "softspace"):
            del self.softspace


# Worst-case linear-time ellipsis matching.
def _ellipsis_match(want, got):
    """
@@ -336,7 +327,6 @@ def _ellipsis_match(want, got):

    return True


def _comment_line(line):
    "Return a commented form of the given line"
    line = line.rstrip()
@@ -345,7 +335,6 @@ def _comment_line(line):
    else:
        return '#'


class _OutputRedirectingPdb(pdb.Pdb):
    """
    A specialized version of the python debugger that redirects stdout
@@ -379,7 +368,6 @@ class _OutputRedirectingPdb(pdb.Pdb):
        finally:
            sys.stdout = save_stdout


# [XX] Normalize with respect to os.path.pardir?
def _module_relative_path(module, path):
    if not inspect.ismodule(module):
@@ -417,7 +405,6 @@ def _module_relative_path(module, path):
##   a string (such as an object's docstring).  The DocTest class also
##   includes information about where the string was extracted from.


class Example:
    """
    A single doctest example, consisting of source code and expected
@@ -471,7 +458,6 @@ class Example:
        self.options = options
        self.exc_msg = exc_msg


class DocTest:
    """
    A collection of doctest examples that should be run in a single
@@ -520,10 +506,10 @@ class DocTest:
        return ('<DocTest %s from %s:%s (%s)>' %
                (self.name, self.filename, self.lineno, examples))


    # This lets us sort tests by name:
    def _cmpkey(self):
        return (self.name, self.filename, self.lineno, id(self))

    def __cmp__(self, other):
        if not isinstance(other, DocTest):
            return -1
@@ -1068,7 +1054,6 @@ class DocTestFinder:
## 5. DocTest Runner
######################################################################


class DocTestRunner:
    """
    A class used to run DocTest test cases, and accumulate statistics.
@@ -1423,7 +1408,6 @@ class DocTestRunner:
    __LINECACHE_FILENAME_RE = re.compile(r'<doctest '
                                         r'(?P<name>[\w\.]+)'
                                         r'\[(?P<examplenum>\d+)\]>$')

    def __patched_linecache_getlines(self, filename, module_globals=None):
        m = self.__LINECACHE_FILENAME_RE.match(filename)
        if m and m.group('name') == self.test.name:
@@ -1557,7 +1541,6 @@ class DocTestRunner:
                t = t + t2
            d[name] = f, t


class OutputChecker:
    """
    A class used to check the whether the actual output from a doctest
@@ -1691,7 +1674,6 @@ class OutputChecker:
        else:
            return 'Expected nothing\nGot nothing\n'


class DocTestFailure(Exception):
    """A DocTest example has failed in debugging mode.

@@ -1711,7 +1693,6 @@ class DocTestFailure(Exception):
    def __str__(self):
        return str(self.test)


class UnexpectedException(Exception):
    """A DocTest example has encountered an unexpected exception

@@ -1731,7 +1712,6 @@ class UnexpectedException(Exception):
    def __str__(self):
        return str(self.test)


class DebugRunner(DocTestRunner):
    r"""Run doc tests but raise an exception as soon as there is a failure.

@@ -1844,7 +1824,6 @@ class DebugRunner(DocTestRunner):
# class, updated by testmod.
master = None


def testmod(m=None, name=None, globs=None, verbose=None,
            report=True, optionflags=0, extraglobs=None,
            raise_on_error=False, exclude_empty=False):
@@ -1949,7 +1928,6 @@ def testmod(m=None, name=None, globs=None, verbose=None,

    return runner.failures, runner.tries


def testfile(filename, module_relative=True, name=None, package=None,
             globs=None, verbose=None, report=True, optionflags=0,
             extraglobs=None, raise_on_error=False, parser=DocTestParser(),
@@ -2073,7 +2051,6 @@ def testfile(filename, module_relative=True, name=None, package=None,

    return runner.failures, runner.tries


def run_docstring_examples(f, globs, verbose=False, name="NoName",
                           compileflags=None, optionflags=0):
    """
@@ -2103,7 +2080,6 @@ def run_docstring_examples(f, globs, verbose=False, name="NoName",
# This is provided only for backwards compatibility.  It's not
# actually used in any way.


class Tester:
    def __init__(self, mod=None, globs=None, verbose=None, optionflags=0):

@@ -2169,7 +2145,6 @@ class Tester:

_unittest_reportflags = 0


def set_unittest_reportflags(flags):
    """Sets the unittest option flags.

@@ -2353,7 +2328,6 @@ class DocTestCase(unittest.TestCase):
    def shortDescription(self):
        return "Doctest: " + self._dt_test.name


def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,
                 test_class=DocTestCase, **options):
    """
@@ -2417,7 +2391,6 @@ def DocTestSuite(module=None, globs=None, extraglobs=None, test_finder=None,

    return suite


class DocFileCase(DocTestCase):

    def id(self):
@@ -2432,7 +2405,6 @@ class DocFileCase(DocTestCase):
                % (self._dt_test.name, self._dt_test.filename, err)
                )


def DocFileTest(path, module_relative=True, package=None,
                globs=None, parser=DocTestParser(),
                encoding=None, **options):
@@ -2462,7 +2434,6 @@ def DocFileTest(path, module_relative=True, package=None,
    test = parser.get_doctest(doc, globs, name, path, 0)
    return DocFileCase(test, **options)


def DocFileSuite(*paths, **kw):
    """A unittest suite for one or more doctest files.

@@ -2536,7 +2507,6 @@ def DocFileSuite(*paths, **kw):
## 9. Debugging Support
######################################################################


def script_from_examples(s):
    r"""Extract script from text with examples.

@@ -2617,7 +2587,6 @@ def script_from_examples(s):
    # Combine the output, and return it.
    return '\n'.join(output)


def testsource(module, name):
    """Extract the test sources from a doctest docstring as a script.

@@ -2634,13 +2603,11 @@ def testsource(module, name):
    testsrc = script_from_examples(test.docstring)
    return testsrc


def debug_src(src, pm=False, globs=None):
    """Debug a single doctest docstring, in argument `src`'"""
    testsrc = script_from_examples(src)
    debug_script(testsrc, pm, globs)


def debug_script(src, pm=False, globs=None):
    "Debug a test script.  `src` is the script, as a string."
    import pdb
@@ -2672,7 +2639,6 @@ def debug_script(src, pm=False, globs=None):
    finally:
        os.remove(srcfilename)


def debug(module, name, pm=False):
    """Debug a single doctest docstring.

@@ -2687,8 +2653,6 @@ def debug(module, name, pm=False):
######################################################################
## 10. Example Usage
######################################################################


class _TestClass:
    """
    A pointless class, for sanity-checking of docstring testing.
@@ -2783,7 +2747,6 @@ __test__ = {"_TestClass": _TestClass,
            """,
           }


def _test():
    r = unittest.TextTestRunner()
    r.run(DocTestSuite())