summaryrefslogtreecommitdiffstats
path: root/tests/test_roles.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_roles.py')
-rw-r--r--tests/test_roles.py75
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 == []