summaryrefslogtreecommitdiffstats
path: root/tests/test_util_docstrings.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test_util_docstrings.py')
-rw-r--r--tests/test_util_docstrings.py88
1 files changed, 88 insertions, 0 deletions
diff --git a/tests/test_util_docstrings.py b/tests/test_util_docstrings.py
new file mode 100644
index 0000000..813e84e
--- /dev/null
+++ b/tests/test_util_docstrings.py
@@ -0,0 +1,88 @@
+"""Test sphinx.util.docstrings."""
+
+from sphinx.util.docstrings import prepare_commentdoc, prepare_docstring, separate_metadata
+
+
+def test_separate_metadata():
+ # metadata only
+ text = (":meta foo: bar\n"
+ ":meta baz:\n")
+ docstring, metadata = separate_metadata(text)
+ assert docstring == ''
+ assert metadata == {'foo': 'bar', 'baz': ''}
+
+ # non metadata field list item
+ text = (":meta foo: bar\n"
+ ":param baz:\n")
+ docstring, metadata = separate_metadata(text)
+ assert docstring == ':param baz:\n'
+ assert metadata == {'foo': 'bar'}
+
+ # field_list like text following just after paragraph is not a field_list
+ text = ("blah blah blah\n"
+ ":meta foo: bar\n"
+ ":meta baz:\n")
+ docstring, metadata = separate_metadata(text)
+ assert docstring == text
+ assert metadata == {}
+
+ # field_list like text following after blank line is a field_list
+ text = ("blah blah blah\n"
+ "\n"
+ ":meta foo: bar\n"
+ ":meta baz:\n")
+ docstring, metadata = separate_metadata(text)
+ assert docstring == "blah blah blah\n\n"
+ assert metadata == {'foo': 'bar', 'baz': ''}
+
+ # non field_list item breaks field_list
+ text = (":meta foo: bar\n"
+ "blah blah blah\n"
+ ":meta baz:\n")
+ docstring, metadata = separate_metadata(text)
+ assert docstring == ("blah blah blah\n"
+ ":meta baz:\n")
+ assert metadata == {'foo': 'bar'}
+
+
+def test_prepare_docstring():
+ docstring = """multiline docstring
+
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit,
+ sed do eiusmod tempor incididunt ut labore et dolore magna
+ aliqua::
+
+ Ut enim ad minim veniam, quis nostrud exercitation
+ ullamco laboris nisi ut aliquip ex ea commodo consequat.
+ """
+
+ assert (prepare_docstring(docstring) ==
+ ["multiline docstring",
+ "",
+ "Lorem ipsum dolor sit amet, consectetur adipiscing elit,",
+ "sed do eiusmod tempor incididunt ut labore et dolore magna",
+ "aliqua::",
+ "",
+ " Ut enim ad minim veniam, quis nostrud exercitation",
+ " ullamco laboris nisi ut aliquip ex ea commodo consequat.",
+ ""])
+
+ docstring = """
+
+ multiline docstring with leading empty lines
+ """
+ assert (prepare_docstring(docstring) ==
+ ["multiline docstring with leading empty lines",
+ ""])
+
+ docstring = "single line docstring"
+ assert (prepare_docstring(docstring) ==
+ ["single line docstring",
+ ""])
+
+
+def test_prepare_commentdoc():
+ assert prepare_commentdoc("hello world") == []
+ assert prepare_commentdoc("#: hello world") == ["hello world", ""]
+ assert prepare_commentdoc("#: hello world") == [" hello world", ""]
+ assert prepare_commentdoc("#: hello\n#: world\n") == ["hello", "world", ""]