diff options
Diffstat (limited to 'tests/test_roles.py')
-rw-r--r-- | tests/test_roles.py | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/tests/test_roles.py b/tests/test_roles.py new file mode 100644 index 0000000..67a13c8 --- /dev/null +++ b/tests/test_roles.py @@ -0,0 +1,75 @@ +"""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()) + 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()) + 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()) + 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()) + 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()) + 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()) + 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()) + 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()) + 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()) + assert_node(ret[0], [nodes.literal, ("print 1+\\", + [nodes.emphasis, "variable"])]) + assert msg == [] |