2022-02-19 18:06:24 -06:00
|
|
|
"""Tests sphinx.util.rst functions.
|
2016-08-29 10:37:30 -05:00
|
|
|
|
2022-01-01 03:45:03 -06:00
|
|
|
:copyright: Copyright 2007-2022 by the Sphinx team, see AUTHORS.
|
2016-08-29 10:37:30 -05:00
|
|
|
:license: BSD, see LICENSE for details.
|
|
|
|
"""
|
2018-11-25 05:23:04 -06:00
|
|
|
|
|
|
|
from docutils.statemachine import StringList
|
2019-05-01 23:46:10 -05:00
|
|
|
from jinja2 import Environment
|
2018-11-25 05:23:04 -06:00
|
|
|
|
2020-11-11 05:00:27 -06:00
|
|
|
from sphinx.util.rst import append_epilog, escape, heading, prepend_prolog, textwidth
|
2016-08-29 10:37:30 -05:00
|
|
|
|
|
|
|
|
|
|
|
def test_escape():
|
2017-02-12 11:02:51 -06:00
|
|
|
assert escape(':ref:`id`') == r'\:ref\:\`id\`'
|
|
|
|
assert escape('footnote [#]_') == r'footnote \[\#\]\_'
|
2018-01-28 03:58:58 -06:00
|
|
|
assert escape('sphinx.application') == r'sphinx.application'
|
|
|
|
assert escape('.. toctree::') == r'\.. toctree\:\:'
|
2018-11-25 05:23:04 -06:00
|
|
|
|
|
|
|
|
|
|
|
def test_append_epilog(app):
|
|
|
|
epilog = 'this is rst_epilog\ngood-bye reST!'
|
|
|
|
content = StringList(['hello Sphinx world',
|
|
|
|
'Sphinx is a document generator'],
|
|
|
|
'dummy.rst')
|
|
|
|
append_epilog(content, epilog)
|
|
|
|
|
|
|
|
assert list(content.xitems()) == [('dummy.rst', 0, 'hello Sphinx world'),
|
|
|
|
('dummy.rst', 1, 'Sphinx is a document generator'),
|
2020-07-06 11:22:36 -05:00
|
|
|
('dummy.rst', 2, ''),
|
2018-11-25 05:23:04 -06:00
|
|
|
('<rst_epilog>', 0, 'this is rst_epilog'),
|
|
|
|
('<rst_epilog>', 1, 'good-bye reST!')]
|
|
|
|
|
|
|
|
|
|
|
|
def test_prepend_prolog(app):
|
|
|
|
prolog = 'this is rst_prolog\nhello reST!'
|
|
|
|
content = StringList([':title: test of SphinxFileInput',
|
|
|
|
':author: Sphinx team',
|
|
|
|
'',
|
|
|
|
'hello Sphinx world',
|
|
|
|
'Sphinx is a document generator'],
|
|
|
|
'dummy.rst')
|
|
|
|
prepend_prolog(content, prolog)
|
|
|
|
|
|
|
|
assert list(content.xitems()) == [('dummy.rst', 0, ':title: test of SphinxFileInput'),
|
|
|
|
('dummy.rst', 1, ':author: Sphinx team'),
|
|
|
|
('<generated>', 0, ''),
|
|
|
|
('<rst_prolog>', 0, 'this is rst_prolog'),
|
|
|
|
('<rst_prolog>', 1, 'hello reST!'),
|
|
|
|
('<generated>', 0, ''),
|
|
|
|
('dummy.rst', 2, ''),
|
|
|
|
('dummy.rst', 3, 'hello Sphinx world'),
|
|
|
|
('dummy.rst', 4, 'Sphinx is a document generator')]
|
|
|
|
|
|
|
|
|
|
|
|
def test_prepend_prolog_with_CR(app):
|
|
|
|
# prolog having CR at tail
|
|
|
|
prolog = 'this is rst_prolog\nhello reST!\n'
|
|
|
|
content = StringList(['hello Sphinx world',
|
|
|
|
'Sphinx is a document generator'],
|
|
|
|
'dummy.rst')
|
|
|
|
prepend_prolog(content, prolog)
|
|
|
|
|
|
|
|
assert list(content.xitems()) == [('<rst_prolog>', 0, 'this is rst_prolog'),
|
|
|
|
('<rst_prolog>', 1, 'hello reST!'),
|
|
|
|
('<generated>', 0, ''),
|
|
|
|
('dummy.rst', 0, 'hello Sphinx world'),
|
|
|
|
('dummy.rst', 1, 'Sphinx is a document generator')]
|
|
|
|
|
|
|
|
|
|
|
|
def test_prepend_prolog_without_CR(app):
|
|
|
|
# prolog not having CR at tail
|
|
|
|
prolog = 'this is rst_prolog\nhello reST!'
|
|
|
|
content = StringList(['hello Sphinx world',
|
|
|
|
'Sphinx is a document generator'],
|
|
|
|
'dummy.rst')
|
|
|
|
prepend_prolog(content, prolog)
|
|
|
|
|
|
|
|
assert list(content.xitems()) == [('<rst_prolog>', 0, 'this is rst_prolog'),
|
|
|
|
('<rst_prolog>', 1, 'hello reST!'),
|
|
|
|
('<generated>', 0, ''),
|
|
|
|
('dummy.rst', 0, 'hello Sphinx world'),
|
|
|
|
('dummy.rst', 1, 'Sphinx is a document generator')]
|
2019-05-01 23:46:10 -05:00
|
|
|
|
|
|
|
|
|
|
|
def test_textwidth():
|
|
|
|
assert textwidth('Hello') == 5
|
|
|
|
assert textwidth('русский язык') == 12
|
|
|
|
assert textwidth('русский язык', 'WFA') == 23 # Cyrillic are ambiguous chars
|
|
|
|
|
|
|
|
|
|
|
|
def test_heading():
|
|
|
|
env = Environment()
|
|
|
|
env.extend(language=None)
|
|
|
|
|
|
|
|
assert heading(env, 'Hello') == ('Hello\n'
|
|
|
|
'=====')
|
|
|
|
assert heading(env, 'Hello', 1) == ('Hello\n'
|
|
|
|
'=====')
|
|
|
|
assert heading(env, 'Hello', 2) == ('Hello\n'
|
|
|
|
'-----')
|
|
|
|
assert heading(env, 'Hello', 3) == ('Hello\n'
|
|
|
|
'~~~~~')
|
|
|
|
assert heading(env, 'русский язык', 1) == (
|
|
|
|
'русский язык\n'
|
|
|
|
'============'
|
|
|
|
)
|
|
|
|
|
|
|
|
# language=ja: ambiguous
|
|
|
|
env.language = 'ja'
|
|
|
|
assert heading(env, 'русский язык', 1) == (
|
|
|
|
'русский язык\n'
|
|
|
|
'======================='
|
|
|
|
)
|