diff options
author | Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> | 2021-11-30 00:22:15 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-11-30 00:22:15 +0100 |
commit | c278e058c51ea633c0a2761a48410b392cf10e82 (patch) | |
tree | 5bb8664bccef6868c5aafd61be038f6008612e11 | |
parent | 6fa8218aa61335edf3da4fc1d81b07cd76221dc5 (diff) | |
download | pylint-git-c278e058c51ea633c0a2761a48410b392cf10e82.tar.gz |
Move ``TestDocstringCheckerReturn`` to functional tests (#5438)
Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
24 files changed, 457 insertions, 720 deletions
diff --git a/tests/extensions/test_check_return_docs.py b/tests/extensions/test_check_return_docs.py deleted file mode 100644 index 64b56434d..000000000 --- a/tests/extensions/test_check_return_docs.py +++ /dev/null @@ -1,720 +0,0 @@ -# Copyright (c) 2016-2018, 2020 Claudiu Popa <pcmanticore@gmail.com> -# Copyright (c) 2016, 2019 Ashley Whetter <ashley@awhetter.co.uk> -# Copyright (c) 2016 Derek Gustafson <degustaf@gmail.com> -# Copyright (c) 2016 Glenn Matthews <glenn@e-dad.net> -# Copyright (c) 2016 Moises Lopez <moylop260@vauxoo.com> -# Copyright (c) 2018 Sushobhit <31987769+sushobhit27@users.noreply.github.com> -# Copyright (c) 2019-2021 Pierre Sassoulas <pierre.sassoulas@gmail.com> -# Copyright (c) 2019 Hugo van Kemenade <hugovk@users.noreply.github.com> -# Copyright (c) 2019 Zeb Nicholls <zebedee.nicholls@climate-energy-college.org> -# Copyright (c) 2020 hippo91 <guillaume.peillex@gmail.com> -# Copyright (c) 2020 Anthony Sottile <asottile@umich.edu> -# Copyright (c) 2021 Daniël van Noord <13665637+DanielNoord@users.noreply.github.com> -# Copyright (c) 2021 Marc Mueller <30130371+cdce8p@users.noreply.github.com> - -# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html -# For details: https://github.com/PyCQA/pylint/blob/main/LICENSE - -"""Unit tests for the return documentation checking in the -`DocstringChecker` in :mod:`pylint.extensions.check_docs` -""" - -# pylint: disable=too-many-public-methods - -import astroid - -from pylint.extensions.docparams import DocstringParameterChecker -from pylint.testutils import CheckerTestCase, MessageTest, set_config - - -class TestDocstringCheckerReturn(CheckerTestCase): - """Tests for pylint_plugin.RaiseDocChecker""" - - CHECKER_CLASS = DocstringParameterChecker - - def test_ignores_no_docstring(self) -> None: - return_node = astroid.extract_node( - """ - def my_func(self): - return False #@ - """ - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc=False) - def test_warns_no_docstring(self) -> None: - node = astroid.extract_node( - """ - def my_func(self): - return False - """ - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node), - MessageTest(msg_id="missing-return-type-doc", node=node), - ): - self.checker.visit_return(return_node) - - def test_ignores_unknown_style(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring.""" - return False #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_partial_sphinx_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :returns: Always False - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-type-doc", node=node) - ): - self.checker.visit_return(return_node) - - def test_sphinx_missing_return_type_with_annotations(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self) -> bool: - """This is a docstring. - - :returns: Always False - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_partial_sphinx_returns_type(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :rtype: bool - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node) - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_missing_sphinx_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - :param doc_type: Sphinx - :type doc_type: str - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node), - MessageTest(msg_id="missing-return-type-doc", node=node), - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_partial_google_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - Always False - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-type-doc", node=node) - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_partial_google_returns_type(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - bool: - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node) - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_missing_google_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - Parameters: - doc_type (str): Google - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node), - MessageTest(msg_id="missing-return-type-doc", node=node), - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_partial_numpy_returns_type(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - Arguments - --------- - doc_type : str - Numpy - - Returns - ------- - bool - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node) - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warn_missing_numpy_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - Arguments - --------- - doc_type : str - Numpy - """ - return False - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node), - MessageTest(msg_id="missing-return-type-doc", node=node), - ): - self.checker.visit_return(return_node) - - def test_find_sphinx_returns(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :return: Always False - :rtype: bool - """ - return False #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_find_google_returns(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - bool: Always False - """ - return False #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_find_numpy_returns(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - bool - Always False - """ - return False #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_find_numpy_returns_with_of(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - :obj:`list` of :obj:`str` - List of strings - """ - return ["hi", "bye"] #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_ignores_sphinx_return_none(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - :param doc_type: Sphinx - :type doc_type: str - """ - return #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_ignores_google_return_none(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - Args: - doc_type (str): Google - """ - return #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_ignores_numpy_return_none(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self, doc_type): - """This is a docstring. - - Arguments - --------- - doc_type : str - Numpy - """ - return #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_finds_sphinx_return_custom_class(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :returns: An object - :rtype: :class:`mymodule.Class` - """ - return mymodule.Class() #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_finds_google_return_custom_class(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - mymodule.Class: An object - """ - return mymodule.Class() #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_finds_numpy_return_custom_class(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - mymodule.Class - An object - """ - return mymodule.Class() #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_finds_sphinx_return_list_of_custom_class(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :returns: An object - :rtype: list(:class:`mymodule.Class`) - """ - return [mymodule.Class()] #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_finds_google_return_list_of_custom_class(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - list(:class:`mymodule.Class`): An object - """ - return [mymodule.Class()] #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - def test_finds_numpy_return_list_of_custom_class(self) -> None: - return_node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - list(:class:`mymodule.Class`) - An object - """ - return [mymodule.Class()] #@ - ''' - ) - with self.assertNoMessages(): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warns_sphinx_return_list_of_custom_class_without_description(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :rtype: list(:class:`mymodule.Class`) - """ - return [mymodule.Class()] - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node) - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warns_google_return_list_of_custom_class_without_description(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - list(:class:`mymodule.Class`): - """ - return [mymodule.Class()] - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node) - ): - self.checker.visit_return(return_node) - - @set_config(accept_no_return_doc="no") - def test_warns_numpy_return_list_of_custom_class_without_description(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - list(:class:`mymodule.Class`) - """ - return [mymodule.Class()] - ''' - ) - return_node = node.body[0] - with self.assertAddsMessages( - MessageTest(msg_id="missing-return-doc", node=node) - ): - self.checker.visit_return(return_node) - - def test_warns_sphinx_redundant_return_doc(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :returns: One - """ - return None - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_warns_sphinx_redundant_rtype_doc(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :rtype: int - """ - return None - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_warns_google_redundant_return_doc(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - One - """ - return None - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_warns_google_redundant_rtype_doc(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - int: - """ - return None - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_warns_numpy_redundant_return_doc(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - int - One - """ - return None - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_warns_numpy_redundant_rtype_doc(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - int - """ - return None - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_ignores_sphinx_redundant_return_doc_multiple_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - :returns: One - :rtype: int - - :returns: None sometimes - :rtype: None - """ - if a_func(): - return None - return 1 - ''' - ) - with self.assertNoMessages(): - self.checker.visit_functiondef(node) - - def test_ignores_google_redundant_return_doc_multiple_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - int or None: One, or sometimes None. - """ - if a_func(): - return None - return 1 - ''' - ) - with self.assertNoMessages(): - self.checker.visit_functiondef(node) - - def test_ignores_numpy_redundant_return_doc_multiple_returns(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - int - One - None - Sometimes - """ - if a_func(): - return None - return 1 - ''' - ) - with self.assertNoMessages(): - self.checker.visit_functiondef(node) - - def test_ignore_sphinx_redundant_return_doc_yield(self) -> None: - node = astroid.extract_node( - ''' - def my_func_with_yield(self): - """This is a docstring. - - :returns: One - :rtype: generator - """ - for value in range(3): - yield value - ''' - ) - with self.assertNoMessages(): - self.checker.visit_functiondef(node) - - def test_warns_google_redundant_return_doc_yield(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns: - int: One - """ - yield 1 - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) - - def test_warns_numpy_redundant_return_doc_yield(self) -> None: - node = astroid.extract_node( - ''' - def my_func(self): - """This is a docstring. - - Returns - ------- - int - One - """ - yield 1 - ''' - ) - with self.assertAddsMessages( - MessageTest(msg_id="redundant-returns-doc", node=node) - ): - self.checker.visit_functiondef(node) diff --git a/tests/functional/ext/docparams/return/missing_return_doc.py b/tests/functional/ext/docparams/return/missing_return_doc.py new file mode 100644 index 000000000..f376b8087 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc.py @@ -0,0 +1,12 @@ +"""Tests for missing-return-doc and missing-return-type-doc""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def ignores_no_docstring(self): + return False + + +def ignores_unknown_style(self): + """This is a docstring.""" + return False diff --git a/tests/functional/ext/docparams/return/missing_return_doc.rc b/tests/functional/ext/docparams/return/missing_return_doc.rc new file mode 100644 index 000000000..3c410593d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins = pylint.extensions.docparams diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Google.py b/tests/functional/ext/docparams/return/missing_return_doc_Google.py new file mode 100644 index 000000000..ba530484b --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Google.py @@ -0,0 +1,77 @@ +"""Tests for missing-return-doc and missing-return-type-doc for Google style docstrings""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def my_func(self): + """find_google_returns + + Returns: + bool: Always False + """ + return False + + +def my_func(self, doc_type): + """ignores_google_return_none + + Args: + doc_type (str): Google + """ + return + + +def my_func(self): + """finds_google_return_custom_class + + Returns: + mymodule.Class: An object + """ + return mymodule.Class() + + +def my_func(self): + """finds_google_return_list_of_custom_class + + Returns: + list(:class:`mymodule.Class`): An object + """ + return [mymodule.Class()] + + +def my_func(self): # [redundant-returns-doc] + """warns_google_redundant_return_doc + + Returns: + One + """ + return None + + +def my_func(self): # [redundant-returns-doc] + """warns_google_redundant_rtype_doc + + Returns: + int: + """ + return None + + +def my_func(self): # [redundant-returns-doc] + """warns_google_redundant_return_doc_yield + + Returns: + int: One + """ + yield 1 + + +def my_func(self): + """ignores_google_redundant_return_doc_multiple_returns + + Returns: + int or None: One, or sometimes None. + """ + if a_func(): + return None + return 1 diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Google.rc b/tests/functional/ext/docparams/return/missing_return_doc_Google.rc new file mode 100644 index 000000000..3c410593d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Google.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins = pylint.extensions.docparams diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Google.txt b/tests/functional/ext/docparams/return/missing_return_doc_Google.txt new file mode 100644 index 000000000..1c226ddcb --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Google.txt @@ -0,0 +1,3 @@ +redundant-returns-doc:42:0:48:15:my_func:Redundant returns documentation:UNDEFINED +redundant-returns-doc:51:0:57:15:my_func:Redundant returns documentation:UNDEFINED +redundant-returns-doc:60:0:66:11:my_func:Redundant returns documentation:UNDEFINED diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Numpy.py b/tests/functional/ext/docparams/return/missing_return_doc_Numpy.py new file mode 100644 index 000000000..269adb424 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Numpy.py @@ -0,0 +1,105 @@ +"""Tests for missing-return-doc and missing-return-type-doc for Numpy style docstrings""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def my_func(self): + """find_numpy_returns + + Returns + ------- + bool + Always False + """ + return False + + +def my_func(self): + """find_numpy_returns_with_of + + Returns + ------- + :obj:`list` of :obj:`str` + List of strings + """ + return ["hi", "bye"] + + +def my_func(self, doc_type): + """ignores_numpy_return_none + + Arguments + --------- + doc_type : str + Numpy + """ + return + + +def my_func(self): + """finds_numpy_return_custom_class + + Returns + ------- + mymodule.Class + An object + """ + return mymodule.Class() + + +def my_func(self): + """finds_numpy_return_list_of_custom_class + + Returns + ------- + list(:class:`mymodule.Class`) + An object + """ + return [mymodule.Class()] + + +def my_func(self): # [redundant-returns-doc] + """warns_numpy_redundant_return_doc + + Returns + ------- + int + One + """ + return None + + +def my_func(self): # [redundant-returns-doc] + """warns_numpy_redundant_rtype_doc + + Returns + ------- + int + """ + return None + + +def my_func(self): + """ignores_numpy_redundant_return_doc_multiple_returns + + Returns + ------- + int + One + None + Sometimes + """ + if a_func(): + return None + return 1 + + +def my_func(self): # [redundant-returns-doc] + """warns_numpy_redundant_return_doc_yield + + Returns + ------- + int + One + """ + yield 1 diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Numpy.rc b/tests/functional/ext/docparams/return/missing_return_doc_Numpy.rc new file mode 100644 index 000000000..3c410593d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Numpy.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins = pylint.extensions.docparams diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Numpy.txt b/tests/functional/ext/docparams/return/missing_return_doc_Numpy.txt new file mode 100644 index 000000000..1c17a80af --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Numpy.txt @@ -0,0 +1,3 @@ +redundant-returns-doc:61:0:69:15:my_func:Redundant returns documentation:UNDEFINED +redundant-returns-doc:72:0:79:15:my_func:Redundant returns documentation:UNDEFINED +redundant-returns-doc:97:0:105:11:my_func:Redundant returns documentation:UNDEFINED diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.py b/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.py new file mode 100644 index 000000000..55bf56919 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.py @@ -0,0 +1,79 @@ +"""Tests for missing-return-doc and missing-return-type-doc for Sphinx style docstrings""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def my_func(self): + """find_sphinx_returns + + :return: Always False + :rtype: bool + """ + return False + + +def my_func(self, doc_type): + """ignores_sphinx_return_none + + :param doc_type: Sphinx + :type doc_type: str + """ + return + + +def my_func(self): + """finds_sphinx_return_custom_class + + :returns: An object + :rtype: :class:`mymodule.Class` + """ + return mymodule.Class() + + +def my_func(self): + """finds_sphinx_return_list_of_custom_class + + :returns: An object + :rtype: list(:class:`mymodule.Class`) + """ + return [mymodule.Class()] + + +def my_func(self): # [redundant-returns-doc] + """warns_sphinx_redundant_return_doc + + :returns: One + """ + return None + + +def my_func(self): # [redundant-returns-doc] + """warns_sphinx_redundant_rtype_doc + + :rtype: int + """ + return None + + +def my_func(self): + """ignores_sphinx_redundant_return_doc_multiple_returns + + :returns: One + :rtype: int + + :returns: None sometimes + :rtype: None + """ + if a_func(): + return None + return 1 + + +def my_func_with_yield(self): + """ignore_sphinx_redundant_return_doc_yield + + :returns: One + :rtype: generator + """ + for value in range(3): + yield value diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.rc b/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.rc new file mode 100644 index 000000000..3c410593d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.rc @@ -0,0 +1,2 @@ +[MASTER] +load-plugins = pylint.extensions.docparams diff --git a/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.txt b/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.txt new file mode 100644 index 000000000..5d7ace227 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_Sphinx.txt @@ -0,0 +1,2 @@ +redundant-returns-doc:42:0:47:15:my_func:Redundant returns documentation:UNDEFINED +redundant-returns-doc:50:0:55:15:my_func:Redundant returns documentation:UNDEFINED diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required.py b/tests/functional/ext/docparams/return/missing_return_doc_required.py new file mode 100644 index 000000000..c34b35777 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required.py @@ -0,0 +1,7 @@ +"""Tests for missing-return-doc and missing-return-type-doc with accept-no-returns-doc = no""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def warns_no_docstring(self): # [missing-return-doc, missing-return-type-doc] + return False diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required.rc b/tests/functional/ext/docparams/return/missing_return_doc_required.rc new file mode 100644 index 000000000..4f8de1a2d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required.rc @@ -0,0 +1,5 @@ +[MASTER] +load-plugins = pylint.extensions.docparams + +[BASIC] +accept-no-return-doc=no diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required.txt b/tests/functional/ext/docparams/return/missing_return_doc_required.txt new file mode 100644 index 000000000..29042dbaa --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required.txt @@ -0,0 +1,2 @@ +missing-return-doc:6:0:7:16:warns_no_docstring:Missing return documentation:UNDEFINED +missing-return-type-doc:6:0:7:16:warns_no_docstring:Missing return type documentation:UNDEFINED diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Google.py b/tests/functional/ext/docparams/return/missing_return_doc_required_Google.py new file mode 100644 index 000000000..55cb2e6f3 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Google.py @@ -0,0 +1,40 @@ +"""Tests for missing-return-doc and missing-return-type-doc for Google style docstrings +with accept-no-returns-doc = no""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def my_func(self): # [missing-return-type-doc] + """Warn partial google returns + + Returns: + Always False + """ + return False + + +def my_func(self): # [missing-return-doc] + """warn_partial_google_returns_type + + Returns: + bool: + """ + return False + + +def my_func(self, doc_type): # [missing-return-doc, missing-return-type-doc] + """warn_missing_google_returns + + Parameters: + doc_type (str): Google + """ + return False + + +def my_func(self): # [missing-return-doc] + """warns_google_return_list_of_custom_class_without_description + + Returns: + list(:class:`mymodule.Class`): + """ + return [mymodule.Class()] diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Google.rc b/tests/functional/ext/docparams/return/missing_return_doc_required_Google.rc new file mode 100644 index 000000000..4f8de1a2d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Google.rc @@ -0,0 +1,5 @@ +[MASTER] +load-plugins = pylint.extensions.docparams + +[BASIC] +accept-no-return-doc=no diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Google.txt b/tests/functional/ext/docparams/return/missing_return_doc_required_Google.txt new file mode 100644 index 000000000..16587df8b --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Google.txt @@ -0,0 +1,5 @@ +missing-return-type-doc:7:0:13:16:my_func:Missing return type documentation:UNDEFINED +missing-return-doc:16:0:22:16:my_func:Missing return documentation:UNDEFINED +missing-return-doc:25:0:31:16:my_func:Missing return documentation:UNDEFINED +missing-return-type-doc:25:0:31:16:my_func:Missing return type documentation:UNDEFINED +missing-return-doc:34:0:40:29:my_func:Missing return documentation:UNDEFINED diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.py b/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.py new file mode 100644 index 000000000..9b160c177 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.py @@ -0,0 +1,40 @@ +"""Tests for missing-return-doc and missing-return-type-doc for Numpy style docstrings +with accept-no-returns-doc = no""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def my_func(self, doc_type): # [missing-return-doc] + """warn_partial_numpy_returns_type + + Arguments + --------- + doc_type : str + Numpy + + Returns + ------- + bool + """ + return False + + +def my_func(self, doc_type): # [missing-return-doc, missing-return-type-doc] + """warn_missing_numpy_returns + + Arguments + --------- + doc_type : str + Numpy + """ + return False + + +def my_func(self): # [missing-return-doc] + """warns_numpy_return_list_of_custom_class_without_description + + Returns + ------- + list(:class:`mymodule.Class`) + """ + return [mymodule.Class()] diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.rc b/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.rc new file mode 100644 index 000000000..4f8de1a2d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.rc @@ -0,0 +1,5 @@ +[MASTER] +load-plugins = pylint.extensions.docparams + +[BASIC] +accept-no-return-doc=no diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.txt b/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.txt new file mode 100644 index 000000000..e3872d206 --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Numpy.txt @@ -0,0 +1,4 @@ +missing-return-doc:7:0:19:16:my_func:Missing return documentation:UNDEFINED +missing-return-doc:22:0:30:16:my_func:Missing return documentation:UNDEFINED +missing-return-type-doc:22:0:30:16:my_func:Missing return type documentation:UNDEFINED +missing-return-doc:33:0:40:29:my_func:Missing return documentation:UNDEFINED diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.py b/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.py new file mode 100644 index 000000000..61be7696e --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.py @@ -0,0 +1,45 @@ +"""Tests for missing-return-doc and missing-return-type-doc for Sphinx style docstrings +with accept-no-returns-doc = no""" +# pylint: disable=function-redefined, invalid-name, undefined-variable, missing-function-docstring +# pylint: disable=unused-argument + + +def my_func(self): # [missing-return-type-doc] + """Warn partial sphinx returns + + :returns: Always False + """ + return False + + +def my_func(self) -> bool: + """Sphinx missing return type with annotations + + :returns: Always False + """ + return False + + +def my_func(self): # [missing-return-doc] + """Warn partial sphinx returns type + + :rtype: bool + """ + return False + + +def warn_missing_sphinx_returns(self, doc_type): # [missing-return-type-doc, missing-return-doc] + """This is a docstring. + + :param doc_type: Sphinx + :type doc_type: str + """ + return False + + +def my_func(self): # [missing-return-doc] + """warns_sphinx_return_list_of_custom_class_without_description + + :rtype: list(:class:`mymodule.Class`) + """ + return [mymodule.Class()] diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.rc b/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.rc new file mode 100644 index 000000000..4f8de1a2d --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.rc @@ -0,0 +1,5 @@ +[MASTER] +load-plugins = pylint.extensions.docparams + +[BASIC] +accept-no-return-doc=no diff --git a/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.txt b/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.txt new file mode 100644 index 000000000..6fe45c67f --- /dev/null +++ b/tests/functional/ext/docparams/return/missing_return_doc_required_Sphinx.txt @@ -0,0 +1,5 @@ +missing-return-type-doc:7:0:12:16:my_func:Missing return type documentation:UNDEFINED +missing-return-doc:23:0:28:16:my_func:Missing return documentation:UNDEFINED +missing-return-doc:31:0:37:16:warn_missing_sphinx_returns:Missing return documentation:UNDEFINED +missing-return-type-doc:31:0:37:16:warn_missing_sphinx_returns:Missing return type documentation:UNDEFINED +missing-return-doc:40:0:45:29:my_func:Missing return documentation:UNDEFINED |