Fix #185: References to section title including raw node has broken

This commit is contained in:
Takeshi KOMIYA 2016-12-17 17:28:19 +09:00
parent 71124bb50c
commit 3b9aee43a2
3 changed files with 16 additions and 1 deletions

View File

@ -13,6 +13,7 @@ Bugs fixed
* #3246: xapian search adapter crashes * #3246: xapian search adapter crashes
* #3253: In Py2 environment, building another locale with a non-captioned * #3253: In Py2 environment, building another locale with a non-captioned
toctree produces ``None`` captions toctree produces ``None`` captions
* #185: References to section title including raw node has broken
Release 1.5.1 (released Dec 13, 2016) Release 1.5.1 (released Dec 13, 2016)
===================================== =====================================

View File

@ -216,6 +216,8 @@ def clean_astext(node):
node = node.deepcopy() node = node.deepcopy()
for img in node.traverse(nodes.image): for img in node.traverse(nodes.image):
img['alt'] = '' img['alt'] = ''
for raw in node.traverse(nodes.raw):
raw.parent.remove(raw)
return node.astext() return node.astext()

View File

@ -15,7 +15,7 @@ from docutils.parsers import rst
from docutils.utils import new_document from docutils.utils import new_document
from docutils import frontend from docutils import frontend
from sphinx.util.nodes import extract_messages from sphinx.util.nodes import extract_messages, clean_astext
from sphinx.transforms import ApplySourceWorkaround from sphinx.transforms import ApplySourceWorkaround
@ -150,3 +150,15 @@ def test_extract_messages_without_rawsource():
_transform(document) _transform(document)
assert_node_count(extract_messages(document), nodes.TextElement, 1) assert_node_count(extract_messages(document), nodes.TextElement, 1)
assert [m for n, m in extract_messages(document)][0], 'text sentence' assert [m for n, m in extract_messages(document)][0], 'text sentence'
def test_clean_astext():
node = nodes.paragraph(text='hello world')
assert 'hello world' == clean_astext(node)
node = nodes.image(alt='hello world')
assert '' == clean_astext(node)
node = nodes.paragraph(text='hello world')
node += nodes.raw('', 'raw text', format='html')
assert 'hello world' == clean_astext(node)