"""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 == []