Table of Contents

Class: DebugRunner ./src/peak/util/_doctest.py

Run doc tests but raise an exception as soon as there is a failure.

If an unexpected exception occurs, an UnexpectedException is raised. It contains the test, the example, and the original exception:

>>> runner = DebugRunner(verbose=False) >>> test = DocTestParser().get_doctest(>>> raise KeyError\n42, ... {}, foo, foo.py, 0) >>> try: ... runner.run(test) ... except UnexpectedException, failure: ... pass

>>> failure.test is test True

>>> failure.example.want 42\n

>>> exc_info = failure.exc_info >>> raise exc_info[0], exc_info[1], exc_info[2] Traceback (most recent call last): ... KeyError

We wrap the original exception to give the calling application access to the test and example information.

If the output doesn't match, then a DocTestFailure is raised:

>>> test = DocTestParser().get_doctest(''' ... >>> x = 1 ... >>> x ... 2 ... ''', {}, foo, foo.py, 0)

>>> try: ... runner.run(test) ... except DocTestFailure, failure: ... pass

DocTestFailure objects provide access to the test:

>>> failure.test is test True

As well as to the example:

         >>> failure.example.want
         '2\n'

and the actual output:

>>> failure.got 1\n

If a failure or error occurs, the globals are left intact:

>>> del test.globs['__builtins__'] >>> test.globs {'x': 1}

>>> test = DocTestParser().get_doctest(''' ... >>> x = 2 ... >>> raise KeyError ... ''', {}, foo, foo.py, 0)

>>> runner.run(test) Traceback (most recent call last): ... UnexpectedException: <DocTest foo from foo.py:0 (2 examples)>

>>> del test.globs['__builtins__'] >>> test.globs {'x': 2}

But the globals are cleared if there is no error:

>>> test = DocTestParser().get_doctest(''' ... >>> x = 2 ... ''', {}, foo, foo.py, 0)

>>> runner.run(test) (0, 1)

>>> test.globs {}

Base Classes   
DocTestRunner
Methods   
report_failure
report_unexpected_exception
run
  report_failure 
report_failure (
        self,
        out,
        test,
        example,
        got,
        )

Exceptions   
DocTestFailure( test, example, got )
  report_unexpected_exception 
report_unexpected_exception (
        self,
        out,
        test,
        example,
        exc_info,
        )

Exceptions   
UnexpectedException( test, example, exc_info )
  run 
run (
        self,
        test,
        compileflags=None,
        out=None,
        clear_globs=True,
        )


Table of Contents

This document was automatically generated on Mon Apr 22 01:11:04 2024 by HappyDoc version 2.1