sphinx/tests/test_transforms_reorder_nodes.py
latosha-maltba 97d2c5da2f
Add the `:no-typesetting:` option for only creating targets (#10478)
Co-authored-by: Adam Turner <9087854+aa-turner@users.noreply.github.com>
2023-07-28 19:43:27 +01:00

97 lines
4.1 KiB
Python

"""Tests the transformations"""
from docutils import nodes
from sphinx import addnodes
from sphinx.testing import restructuredtext
from sphinx.testing.util import assert_node
def test_transforms_reorder_consecutive_target_and_index_nodes_preserve_order(app):
text = ('.. index:: abc\n'
'.. index:: def\n'
'.. index:: ghi\n'
'.. index:: jkl\n'
'\n'
'text\n')
doctree = restructuredtext.parse(app, text)
assert_node(doctree, (addnodes.index,
addnodes.index,
addnodes.index,
addnodes.index,
nodes.target,
nodes.target,
nodes.target,
nodes.target,
nodes.paragraph))
assert_node(doctree[0], addnodes.index, entries=[('single', 'abc', 'index-0', '', None)])
assert_node(doctree[1], addnodes.index, entries=[('single', 'def', 'index-1', '', None)])
assert_node(doctree[2], addnodes.index, entries=[('single', 'ghi', 'index-2', '', None)])
assert_node(doctree[3], addnodes.index, entries=[('single', 'jkl', 'index-3', '', None)])
assert_node(doctree[4], nodes.target, refid='index-0')
assert_node(doctree[5], nodes.target, refid='index-1')
assert_node(doctree[6], nodes.target, refid='index-2')
assert_node(doctree[7], nodes.target, refid='index-3')
# assert_node(doctree[8], nodes.paragraph)
def test_transforms_reorder_consecutive_target_and_index_nodes_no_merge_across_other_nodes(app):
text = ('.. index:: abc\n'
'.. index:: def\n'
'\n'
'text\n'
'\n'
'.. index:: ghi\n'
'.. index:: jkl\n'
'\n'
'text\n')
doctree = restructuredtext.parse(app, text)
assert_node(doctree, (addnodes.index,
addnodes.index,
nodes.target,
nodes.target,
nodes.paragraph,
addnodes.index,
addnodes.index,
nodes.target,
nodes.target,
nodes.paragraph))
assert_node(doctree[0], addnodes.index, entries=[('single', 'abc', 'index-0', '', None)])
assert_node(doctree[1], addnodes.index, entries=[('single', 'def', 'index-1', '', None)])
assert_node(doctree[2], nodes.target, refid='index-0')
assert_node(doctree[3], nodes.target, refid='index-1')
# assert_node(doctree[4], nodes.paragraph)
assert_node(doctree[5], addnodes.index, entries=[('single', 'ghi', 'index-2', '', None)])
assert_node(doctree[6], addnodes.index, entries=[('single', 'jkl', 'index-3', '', None)])
assert_node(doctree[7], nodes.target, refid='index-2')
assert_node(doctree[8], nodes.target, refid='index-3')
# assert_node(doctree[9], nodes.paragraph)
def test_transforms_reorder_consecutive_target_and_index_nodes_merge_with_labels(app):
text = ('.. _abc:\n'
'.. index:: def\n'
'.. _ghi:\n'
'.. index:: jkl\n'
'.. _mno:\n'
'\n'
'Heading\n'
'=======\n')
doctree = restructuredtext.parse(app, text)
assert_node(doctree, (nodes.title,
addnodes.index,
addnodes.index,
nodes.target,
nodes.target,
nodes.target,
nodes.target,
nodes.target))
# assert_node(doctree[8], nodes.title)
assert_node(doctree[1], addnodes.index, entries=[('single', 'def', 'index-0', '', None)])
assert_node(doctree[2], addnodes.index, entries=[('single', 'jkl', 'index-1', '', None)])
assert_node(doctree[3], nodes.target, refid='abc')
assert_node(doctree[4], nodes.target, refid='index-0')
assert_node(doctree[5], nodes.target, refid='ghi')
assert_node(doctree[6], nodes.target, refid='index-1')
assert_node(doctree[7], nodes.target, refid='mno')