sphinx-doc/sphinx

sphinx.ext.doctest should ensure that output is patched before importing the target

Open

#3 891 ouverte le 25 juin 2017

Voir sur GitHub
 (1 commentaire) (0 réactions) (0 assignés)Python (1 985 forks)batch import
builderextensions:doctesthelp wantedtype:proposal

Métriques du dépôt

Stars
 (5 625 stars)
Métriques de merge PR
 (Merge moyen 10j 11h) (11 PRs mergées en 30 j)

Description

Problem

  • sphinx.ext.doctest will import the target before making sure that docutils has patched sys.stdout and sys.stderr with _SpoofOut objects. If the target module has already gotten a reference to stdout and stderr and writes to them doctests will fail.

Procedure to reproduce the problem

doctest a function like:

def f(stdout=sys.stdout):
    """
    .. testcode::
        f()
    .. testoutput::
        hello
    """
    stdout.write("hello")

Expected results

a successful doctest, where sys.stdout should be patched before the module under test is imported

Actual results

The output goes to the real sys.stdout, and the doctest fails claiming no output was produced

Guide contributeur