sphinx/tests/test_markup/test_parser.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

64 lines
2.1 KiB
Python
Raw Normal View History

"""Tests parsers module."""
from unittest.mock import Mock, patch
import pytest
from sphinx.parsers import RSTParser
from sphinx.util.docutils import new_document
@pytest.mark.sphinx(testroot='basic')
@patch('docutils.parsers.rst.states.RSTStateMachine')
def test_RSTParser_prolog_epilog(RSTStateMachine, app):
document = new_document('dummy.rst')
document.settings = Mock(tab_width=8, language_code='')
parser = RSTParser()
parser.set_application(app)
# normal case
2024-08-11 08:58:56 -05:00
text = 'hello Sphinx world\nSphinx is a document generator'
parser.parse(text, document)
(content, _), _ = RSTStateMachine().run.call_args
2024-08-11 08:58:56 -05:00
assert list(content.xitems()) == [
('dummy.rst', 0, 'hello Sphinx world'),
('dummy.rst', 1, 'Sphinx is a document generator'),
]
# with rst_prolog
app.env.config.rst_prolog = 'this is rst_prolog\nhello reST!'
parser.parse(text, document)
(content, _), _ = RSTStateMachine().run.call_args
2024-08-11 08:58:56 -05:00
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'),
]
# with rst_epilog
app.env.config.rst_prolog = None
app.env.config.rst_epilog = 'this is rst_epilog\ngood-bye reST!'
parser.parse(text, document)
(content, _), _ = RSTStateMachine().run.call_args
2024-08-11 08:58:56 -05:00
assert list(content.xitems()) == [
('dummy.rst', 0, 'hello Sphinx world'),
('dummy.rst', 1, 'Sphinx is a document generator'),
('dummy.rst', 2, ''),
('<rst_epilog>', 0, 'this is rst_epilog'),
('<rst_epilog>', 1, 'good-bye reST!'),
]
# expandtabs / convert whitespaces
app.env.config.rst_prolog = None
app.env.config.rst_epilog = None
2024-08-11 08:58:56 -05:00
text = '\thello Sphinx world\n\v\fSphinx is a document generator'
parser.parse(text, document)
(content, _), _ = RSTStateMachine().run.call_args
2024-08-11 08:58:56 -05:00
assert list(content.xitems()) == [
('dummy.rst', 0, ' hello Sphinx world'),
('dummy.rst', 1, ' Sphinx is a document generator'),
]