Fix #6545. Strip doctests for doctest_node blocks.

This commit is contained in:
Nathan Goldbaum
2019-07-07 19:28:45 -04:00
parent ef2f1057cd
commit a570ea6c03
3 changed files with 23 additions and 8 deletions
+16 -8
View File
@@ -9,7 +9,7 @@
"""
import sys
from typing import NamedTuple
from typing import NamedTuple, Union
from docutils import nodes
from pygments.lexers import PythonConsoleLexer, guess_lexer
@@ -110,13 +110,21 @@ class TrimDoctestFlagsTransform(SphinxTransform):
if not self.config.trim_doctest_flags:
return
for node in self.document.traverse(nodes.literal_block):
if self.is_pyconsole(node):
source = node.rawsource
source = doctest.blankline_re.sub('', source)
source = doctest.doctestopt_re.sub('', source)
node.rawsource = source
node[:] = [nodes.Text(source)]
for lbnode in self.document.traverse(nodes.literal_block): # type: nodes.literal_block
if self.is_pyconsole(lbnode):
self.strip_doctest_flags(lbnode)
for dbnode in self.document.traverse(nodes.doctest_block): # type: nodes.doctest_block
self.strip_doctest_flags(dbnode)
@staticmethod
def strip_doctest_flags(node):
# type: (Union[nodes.literal_block, nodes.doctest_block]) -> None
source = node.rawsource
source = doctest.blankline_re.sub('', source)
source = doctest.doctestopt_re.sub('', source)
node.rawsource = source
node[:] = [nodes.Text(source)]
@staticmethod
def is_pyconsole(node):
@@ -21,3 +21,8 @@ test-trim_doctest_flags
>>> datetime.date.now() # doctest: +QUX
datetime.date(2008, 1, 1)
.. doctest_block::
>>> datetime.date.now() # doctest: +QUUX
datetime.date(2008, 1, 1)
@@ -18,6 +18,7 @@ def test_trim_doctest_flags_html(app, status, warning):
assert 'BAR' in result
assert 'BAZ' not in result
assert 'QUX' not in result
assert 'QUUX' not in result
@pytest.mark.sphinx('latex', testroot='trim_doctest_flags')
@@ -29,3 +30,4 @@ def test_trim_doctest_flags_latex(app, status, warning):
assert 'BAR' in result
assert 'BAZ' not in result
assert 'QUX' not in result
assert 'QUUX' not in result