Fix #5770: doctest: Follow highlight_language on highlighting doctest block

This commit is contained in:
Takeshi KOMIYA 2018-12-15 18:35:12 +09:00
parent aaf0046f44
commit d6d4406ce9
3 changed files with 28 additions and 2 deletions

View File

@ -31,6 +31,8 @@ Incompatible changes
will use the text font not the math font. The ``LGR`` font encoding must be will use the text font not the math font. The ``LGR`` font encoding must be
added to the ``'fontenc'`` key of :confval:`latex_elements` for this to work added to the ``'fontenc'`` key of :confval:`latex_elements` for this to work
(only if it is needed by the document, of course). (only if it is needed by the document, of course).
* #5770: doctest: Follow :confval:`highlight_language` on highlighting doctest
block. As a result, they are highlighted as python3 by default.
Deprecated Deprecated
---------- ----------

View File

@ -122,9 +122,15 @@ class TestDirective(SphinxDirective):
# only save if it differs from code # only save if it differs from code
node['test'] = test node['test'] = test
if self.name == 'doctest': if self.name == 'doctest':
node['language'] = 'pycon' if self.config.highlight_language in ('py', 'python'):
node['language'] = 'pycon'
else:
node['language'] = 'pycon3' # default
elif self.name == 'testcode': elif self.name == 'testcode':
node['language'] = 'python' if self.config.highlight_language in ('py', 'python'):
node['language'] = 'python'
else:
node['language'] = 'python3' # default
elif self.name == 'testoutput': elif self.name == 'testoutput':
# don't try to highlight output # don't try to highlight output
node['language'] = 'none' node['language'] = 'none'

View File

@ -11,6 +11,7 @@
import os import os
from collections import Counter from collections import Counter
from docutils import nodes
import pytest import pytest
from packaging.specifiers import InvalidSpecifier from packaging.specifiers import InvalidSpecifier
from packaging.version import InvalidVersion from packaging.version import InvalidVersion
@ -32,6 +33,23 @@ def test_build(app, status, warning):
assert cleanup_called == 3, 'testcleanup did not get executed enough times' assert cleanup_called == 3, 'testcleanup did not get executed enough times'
@pytest.mark.sphinx('dummy', testroot='ext-doctest')
def test_highlight_language_default(app, status, warning):
app.build()
doctree = app.env.get_doctree('doctest')
for node in doctree.traverse(nodes.literal_block):
assert node['language'] in ('python3', 'pycon3', 'none')
@pytest.mark.sphinx('dummy', testroot='ext-doctest',
confoverrides={'highlight_language': 'python'})
def test_highlight_language_python2(app, status, warning):
app.build()
doctree = app.env.get_doctree('doctest')
for node in doctree.traverse(nodes.literal_block):
assert node['language'] in ('python', 'pycon', 'none')
def test_is_allowed_version(): def test_is_allowed_version():
assert is_allowed_version('<3.4', '3.3') is True assert is_allowed_version('<3.4', '3.3') is True
assert is_allowed_version('<3.4', '3.3') is True assert is_allowed_version('<3.4', '3.3') is True