# Copyright (c) 2016-2017 Claudiu Popa # Copyright (c) 2016 Derek Gustafson # Copyright (c) 2016 Ashley Whetter # Copyright (c) 2018 Anthony Sottile # Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # For details: https://github.com/PyCQA/pylint/blob/master/COPYING """Unit tests for the pylint checkers in :mod:`pylint.extensions.check_docs`, in particular the parameter documentation checker `DocstringChecker` """ import astroid import pytest import pylint.extensions._check_docs_utils as utils @pytest.mark.parametrize( "string,count", [("abc", 0), ("", 0), (" abc", 2), ("\n abc", 0), (" \n abc", 3)], ) def test_space_indentation(string, count): """Test for pylint_plugin.ParamDocChecker""" assert utils.space_indentation(string) == count @pytest.mark.parametrize( "raise_node,expected", [ ( astroid.extract_node( """ def my_func(): raise NotImplementedError #@ """ ), {"NotImplementedError"}, ), ( astroid.extract_node( """ def my_func(): raise NotImplementedError("Not implemented!") #@ """ ), {"NotImplementedError"}, ), ( astroid.extract_node( """ def my_func(): try: fake_func() except RuntimeError: raise #@ """ ), {"RuntimeError"}, ), ( astroid.extract_node( """ def my_func(): try: fake_func() except RuntimeError: if another_func(): raise #@ """ ), {"RuntimeError"}, ), ( astroid.extract_node( """ def my_func(): try: fake_func() except RuntimeError: try: another_func() raise #@ except NameError: pass """ ), {"RuntimeError"}, ), ( astroid.extract_node( """ def my_func(): try: fake_func() except RuntimeError: try: another_func() except NameError: raise #@ """ ), {"NameError"}, ), ( astroid.extract_node( """ def my_func(): try: fake_func() except: raise #@ """ ), set(), ), ( astroid.extract_node( """ def my_func(): try: fake_func() except (RuntimeError, ValueError): raise #@ """ ), {"RuntimeError", "ValueError"}, ), ( astroid.extract_node( """ import not_a_module def my_func(): try: fake_func() except not_a_module.Error: raise #@ """ ), set(), ), ], ) def test_exception(raise_node, expected): found = utils.possible_exc_types(raise_node) assert found == expected