summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-11-02 22:25:10 +0900
committerTakeshi KOMIYA <i.tkomiya@gmail.com>2020-11-02 22:25:10 +0900
commit449a567732dbb484c51cb2e591418d9f4f2ed8df (patch)
tree520cf19a1d3b5a8915721aa343d4735a0fd83e4d /tests
parent7eabbfc5ecdf52329672410f651880645074e215 (diff)
parent487b8436c6e8dc596db4b8d4d06e9145105a2ac2 (diff)
downloadsphinx-git-449a567732dbb484c51cb2e591418d9f4f2ed8df.tar.gz
Merge branch '3.x'
Diffstat (limited to 'tests')
-rw-r--r--tests/test_domain_c.py4
-rw-r--r--tests/test_domain_cpp.py12
-rw-r--r--tests/test_ext_autodoc_configs.py48
-rw-r--r--tests/test_ext_napoleon_docstring.py121
4 files changed, 170 insertions, 15 deletions
diff --git a/tests/test_domain_c.py b/tests/test_domain_c.py
index 43d71f74e..f1014f6b8 100644
--- a/tests/test_domain_c.py
+++ b/tests/test_domain_c.py
@@ -54,8 +54,8 @@ def _check(name, input, idDict, output, key, asTextOutput):
print("Result: ", res)
print("Expected: ", outputAst)
raise DefinitionError("")
- rootSymbol = Symbol(None, None, None, None)
- symbol = rootSymbol.add_declaration(ast, docname="TestDoc")
+ rootSymbol = Symbol(None, None, None, None, None)
+ symbol = rootSymbol.add_declaration(ast, docname="TestDoc", line=42)
parentNode = addnodes.desc()
signode = addnodes.desc_signature(input, '')
parentNode += signode
diff --git a/tests/test_domain_cpp.py b/tests/test_domain_cpp.py
index cacbb2f11..72308f4af 100644
--- a/tests/test_domain_cpp.py
+++ b/tests/test_domain_cpp.py
@@ -59,8 +59,8 @@ def _check(name, input, idDict, output, key, asTextOutput):
print("Result: ", res)
print("Expected: ", outputAst)
raise DefinitionError("")
- rootSymbol = Symbol(None, None, None, None, None, None)
- symbol = rootSymbol.add_declaration(ast, docname="TestDoc")
+ rootSymbol = Symbol(None, None, None, None, None, None, None)
+ symbol = rootSymbol.add_declaration(ast, docname="TestDoc", line=42)
parentNode = addnodes.desc()
signode = addnodes.desc_signature(input, '')
parentNode += signode
@@ -1241,8 +1241,8 @@ def test_mix_decl_duplicate(app, warning):
restructuredtext.parse(app, text)
ws = warning.getvalue().split("\n")
assert len(ws) == 5
- assert "index.rst:2: WARNING: Duplicate C++ declaration, also defined in 'index'." in ws[0]
- assert "Declaration is 'void A()'." in ws[1]
- assert "index.rst:3: WARNING: Duplicate C++ declaration, also defined in 'index'." in ws[2]
- assert "Declaration is 'A'." in ws[3]
+ assert "index.rst:2: WARNING: Duplicate C++ declaration, also defined at index:1." in ws[0]
+ assert "Declaration is '.. cpp:function:: void A()'." in ws[1]
+ assert "index.rst:3: WARNING: Duplicate C++ declaration, also defined at index:1." in ws[2]
+ assert "Declaration is '.. cpp:struct:: A'." in ws[3]
assert ws[4] == "" \ No newline at end of file
diff --git a/tests/test_ext_autodoc_configs.py b/tests/test_ext_autodoc_configs.py
index 7d51b7f0e..8ebe12d40 100644
--- a/tests/test_ext_autodoc_configs.py
+++ b/tests/test_ext_autodoc_configs.py
@@ -610,6 +610,54 @@ def test_autodoc_typehints_none(app):
]
+@pytest.mark.sphinx('html', testroot='ext-autodoc',
+ confoverrides={'autodoc_typehints': 'none'})
+def test_autodoc_typehints_none_for_overload(app):
+ options = {"members": None}
+ actual = do_autodoc(app, 'module', 'target.overload', options)
+ assert list(actual) == [
+ '',
+ '.. py:module:: target.overload',
+ '',
+ '',
+ '.. py:class:: Bar(x, y)',
+ ' :module: target.overload',
+ '',
+ ' docstring',
+ '',
+ '',
+ '.. py:class:: Baz(x, y)',
+ ' :module: target.overload',
+ '',
+ ' docstring',
+ '',
+ '',
+ '.. py:class:: Foo(x, y)',
+ ' :module: target.overload',
+ '',
+ ' docstring',
+ '',
+ '',
+ '.. py:class:: Math()',
+ ' :module: target.overload',
+ '',
+ ' docstring',
+ '',
+ '',
+ ' .. py:method:: Math.sum(x, y)',
+ ' :module: target.overload',
+ '',
+ ' docstring',
+ '',
+ '',
+ '.. py:function:: sum(x, y)',
+ ' :module: target.overload',
+ '',
+ ' docstring',
+ '',
+ ]
+
+
@pytest.mark.sphinx('text', testroot='ext-autodoc',
confoverrides={'autodoc_typehints': "description"})
def test_autodoc_typehints_description(app):
diff --git a/tests/test_ext_napoleon_docstring.py b/tests/test_ext_napoleon_docstring.py
index bbc075edd..0ebc145b6 100644
--- a/tests/test_ext_napoleon_docstring.py
+++ b/tests/test_ext_napoleon_docstring.py
@@ -1177,7 +1177,7 @@ class NumpyDocstringTest(BaseDocstringTest):
"""
Single line summary
- :returns: *str* -- Extended
+ :returns: :class:`str` -- Extended
description of return value
"""
), (
@@ -1193,7 +1193,7 @@ class NumpyDocstringTest(BaseDocstringTest):
"""
Single line summary
- :returns: *str* -- Extended
+ :returns: :class:`str` -- Extended
description of return value
"""
), (
@@ -1246,7 +1246,7 @@ class NumpyDocstringTest(BaseDocstringTest):
"""
Single line summary
- :Yields: *str* -- Extended
+ :Yields: :class:`str` -- Extended
description of yielded value
"""
), (
@@ -1262,7 +1262,7 @@ class NumpyDocstringTest(BaseDocstringTest):
"""
Single line summary
- :Yields: *str* -- Extended
+ :Yields: :class:`str` -- Extended
description of yielded value
"""
)]
@@ -1455,9 +1455,38 @@ numpy.multivariate_normal(mean, cov, shape=None, spam=None)
.. seealso::
- :meth:`some`, :meth:`other`, :meth:`funcs`
+ :obj:`some`, :obj:`other`, :obj:`funcs`
+ \n\
+ :obj:`otherfunc`
+ relationship
+"""
+ self.assertEqual(expected, actual)
+
+ docstring = """\
+numpy.multivariate_normal(mean, cov, shape=None, spam=None)
+
+See Also
+--------
+some, other, :func:`funcs`
+otherfunc : relationship
+
+"""
+ translations = {
+ "other": "MyClass.other",
+ "otherfunc": ":func:`~my_package.otherfunc`",
+ }
+ config = Config(napoleon_type_aliases=translations)
+ app = mock.Mock()
+ actual = str(NumpyDocstring(docstring, config, app, "method"))
+
+ expected = """\
+numpy.multivariate_normal(mean, cov, shape=None, spam=None)
+
+.. seealso::
+
+ :obj:`some`, :obj:`MyClass.other`, :func:`funcs`
\n\
- :meth:`otherfunc`
+ :func:`~my_package.otherfunc`
relationship
"""
self.assertEqual(expected, actual)
@@ -1526,6 +1555,52 @@ arg_ : type
self.assertEqual(expected, actual)
+ def test_return_types(self):
+ docstring = dedent("""
+ Returns
+ -------
+ DataFrame
+ a dataframe
+ """)
+ expected = dedent("""
+ :returns: a dataframe
+ :rtype: :class:`~pandas.DataFrame`
+ """)
+ translations = {
+ "DataFrame": "~pandas.DataFrame",
+ }
+ config = Config(
+ napoleon_use_param=True,
+ napoleon_use_rtype=True,
+ napoleon_preprocess_types=True,
+ napoleon_type_aliases=translations,
+ )
+ actual = str(NumpyDocstring(docstring, config))
+ self.assertEqual(expected, actual)
+
+ def test_yield_types(self):
+ docstring = dedent("""
+ Example Function
+
+ Yields
+ ------
+ scalar or array-like
+ The result of the computation
+ """)
+ expected = dedent("""
+ Example Function
+
+ :Yields: :term:`scalar` or :class:`array-like <numpy.ndarray>` -- The result of the computation
+ """)
+ translations = {
+ "scalar": ":term:`scalar`",
+ "array-like": ":class:`array-like <numpy.ndarray>`",
+ }
+ config = Config(napoleon_type_aliases=translations, napoleon_preprocess_types=True)
+ app = mock.Mock()
+ actual = str(NumpyDocstring(docstring, config, app, "method"))
+ self.assertEqual(expected, actual)
+
def test_raises_types(self):
docstrings = [("""
Example Function
@@ -1692,6 +1767,34 @@ Example Function
Raises
------
+CustomError
+ If the dimensions couldn't be parsed.
+
+""", """
+Example Function
+
+:raises package.CustomError: If the dimensions couldn't be parsed.
+"""),
+ ################################
+ ("""
+Example Function
+
+Raises
+------
+AnotherError
+ If the dimensions couldn't be parsed.
+
+""", """
+Example Function
+
+:raises ~package.AnotherError: If the dimensions couldn't be parsed.
+"""),
+ ################################
+ ("""
+Example Function
+
+Raises
+------
:class:`exc.InvalidDimensionsError`
:class:`exc.InvalidArgumentsError`
@@ -1702,7 +1805,11 @@ Example Function
:raises exc.InvalidArgumentsError:
""")]
for docstring, expected in docstrings:
- config = Config()
+ translations = {
+ "CustomError": "package.CustomError",
+ "AnotherError": ":py:exc:`~package.AnotherError`",
+ }
+ config = Config(napoleon_type_aliases=translations, napoleon_preprocess_types=True)
app = mock.Mock()
actual = str(NumpyDocstring(docstring, config, app, "method"))
self.assertEqual(expected, actual)