sphinx/tests/test_roles.py

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

116 lines
2.7 KiB
Python
Raw Normal View History

"""Test sphinx.roles"""
from unittest.mock import Mock
from docutils import nodes
from sphinx.roles import EmphasizedLiteral
from sphinx.testing.util import assert_node
def test_samp():
emph_literal_role = EmphasizedLiteral()
# normal case
text = 'print 1+{variable}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(
ret[0],
[
nodes.literal,
(
'print 1+',
[nodes.emphasis, 'variable'],
),
],
)
assert msg == []
# two emphasis items
text = 'print {1}+{variable}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(
ret[0],
[
nodes.literal,
(
'print ',
[nodes.emphasis, '1'],
'+',
[nodes.emphasis, 'variable'],
),
],
)
assert msg == []
# empty curly brace
text = 'print 1+{}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(ret[0], [nodes.literal, 'print 1+{}'])
assert msg == []
# half-opened variable
text = 'print 1+{variable'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(ret[0], [nodes.literal, 'print 1+{variable'])
assert msg == []
# nested
text = 'print 1+{{variable}}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(
ret[0],
[
nodes.literal,
(
'print 1+',
[nodes.emphasis, '{variable'],
'}',
),
],
)
assert msg == []
# emphasized item only
text = '{variable}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(ret[0], [nodes.literal, nodes.emphasis, 'variable'])
assert msg == []
# escaping
text = r'print 1+\{variable}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(ret[0], [nodes.literal, 'print 1+{variable}'])
assert msg == []
# escaping (2)
text = r'print 1+\{{variable}\}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(
ret[0],
[
nodes.literal,
(
'print 1+{',
[nodes.emphasis, 'variable'],
'}',
),
],
)
assert msg == []
# escape a backslash
text = r'print 1+\\{variable}'
ret, msg = emph_literal_role('samp', text, text, 0, Mock())
2024-08-11 08:58:56 -05:00
assert_node(
ret[0],
[
nodes.literal,
(
'print 1+\\',
[nodes.emphasis, 'variable'],
),
],
)
assert msg == []