sphinx/tests/test_util/test_util_docstrings.py
2024-01-17 03:56:35 +00:00

89 lines
3.0 KiB
Python

"""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", ""]