# Licensed under the GPL: https://www.gnu.org/licenses/old-licenses/gpl-2.0.html # For details: https://github.com/pylint-dev/pylint/blob/main/LICENSE # Copyright (c) https://github.com/pylint-dev/pylint/blob/main/CONTRIBUTORS.txt import astroid from pylint.checkers import design_analysis from pylint.testutils import CheckerTestCase, set_config class TestDesignChecker(CheckerTestCase): CHECKER_CLASS = design_analysis.MisdesignChecker @set_config( ignored_parents=(".Dddd",), max_parents=1, ) def test_too_many_ancestors_ignored_parents_are_skipped(self) -> None: """Make sure that classes listed in ``ignored-parents`` aren't counted by the too-many-ancestors message. """ node = astroid.extract_node( """ class Aaaa(object): pass class Bbbb(Aaaa): pass class Cccc(Bbbb): pass class Dddd(Cccc): pass class Eeee(Dddd): pass """ ) with self.assertNoMessages(): self.checker.visit_classdef(node) @set_config(exclude_too_few_public_methods="toml.*") def test_exclude_too_few_methods_with_value(self) -> None: """Test exclude-too-few-public-methods option with value.""" options = self.linter.config.exclude_too_few_public_methods assert any(i.match("toml") for i in options) assert any(i.match("toml.*") for i in options) assert any(i.match("toml.TomlEncoder") for i in options) def test_ignore_paths_with_no_value(self) -> None: """Test exclude-too-few-public-methods option with no value. Compare against actual list to see if validator works. """ options = self.linter.config.exclude_too_few_public_methods assert options == []