summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniƫl van Noord <13665637+DanielNoord@users.noreply.github.com>2021-12-03 13:45:08 +0100
committerGitHub <noreply@github.com>2021-12-03 13:45:08 +0100
commite14596ef44db6efd55c783fc5bffd61d020edc23 (patch)
tree52d492485ce0b3327ada1f54ec102bc2e8a7d95f
parent4b70feb297b4aada56b838c1e71f40badccf9472 (diff)
downloadpylint-git-e14596ef44db6efd55c783fc5bffd61d020edc23.tar.gz
Move ``no-member`` tests from ``TestTypeChecker`` (#5453)
* Do not use collections or dataclasses for check
-rw-r--r--tests/checkers/unittest_typecheck.py115
-rw-r--r--tests/functional/n/no/no_member_imports.py59
-rw-r--r--tests/functional/n/no/no_member_imports.rc3
-rw-r--r--tests/functional/n/no/no_member_imports.txt3
4 files changed, 65 insertions, 115 deletions
diff --git a/tests/checkers/unittest_typecheck.py b/tests/checkers/unittest_typecheck.py
index 3a384ba4b..fbb4d53de 100644
--- a/tests/checkers/unittest_typecheck.py
+++ b/tests/checkers/unittest_typecheck.py
@@ -49,121 +49,6 @@ class TestTypeChecker(CheckerTestCase):
"Tests for pylint.checkers.typecheck"
CHECKER_CLASS = typecheck.TypeChecker
- def test_no_member_in_getattr(self) -> None:
- """Make sure that a module attribute access is checked by pylint."""
-
- node = astroid.extract_node(
- """
- import optparse
- optparse.THIS_does_not_EXIST
- """
- )
- with self.assertAddsMessages(
- MessageTest(
- "no-member",
- node=node,
- args=("Module", "optparse", "THIS_does_not_EXIST", ""),
- confidence=INFERENCE,
- )
- ):
- self.checker.visit_attribute(node)
-
- @set_config(ignored_modules=("argparse",))
- def test_no_member_in_getattr_ignored(self) -> None:
- """Make sure that a module attribute access check is omitted with a
- module that is configured to be ignored.
- """
-
- node = astroid.extract_node(
- """
- import argparse
- argparse.THIS_does_not_EXIST
- """
- )
- with self.assertNoMessages():
- self.checker.visit_attribute(node)
-
- @set_config(ignored_modules=("xml.etree.",))
- def test_ignored_modules_invalid_pattern(self) -> None:
- node = astroid.extract_node(
- """
- import xml
- xml.etree.Lala
- """
- )
- message = MessageTest(
- "no-member",
- node=node,
- args=("Module", "xml.etree", "Lala", ""),
- confidence=INFERENCE,
- )
- with self.assertAddsMessages(message):
- self.checker.visit_attribute(node)
-
- @set_config(ignored_modules=("xml",))
- def test_ignored_modules_root_one_applies_as_well(self) -> None:
- # Check that when a root module is completely ignored, submodules are skipped.
- node = astroid.extract_node(
- """
- import xml
- xml.etree.Lala
- """
- )
- with self.assertNoMessages():
- self.checker.visit_attribute(node)
-
- @set_config(ignored_modules=("xml.etree*",))
- def test_ignored_modules_patterns(self) -> None:
- node = astroid.extract_node(
- """
- import xml
- xml.etree.portocola #@
- """
- )
- with self.assertNoMessages():
- self.checker.visit_attribute(node)
-
- @set_config(ignored_classes=("xml.*",))
- def test_ignored_classes_no_recursive_pattern(self) -> None:
- node = astroid.extract_node(
- """
- import xml
- xml.etree.ElementTree.Test
- """
- )
- message = MessageTest(
- "no-member",
- node=node,
- args=("Module", "xml.etree.ElementTree", "Test", ""),
- confidence=INFERENCE,
- )
- with self.assertAddsMessages(message):
- self.checker.visit_attribute(node)
-
- @set_config(ignored_classes=("optparse.Values",))
- def test_ignored_classes_qualified_name(self) -> None:
- """Test that ignored-classes supports qualified name for ignoring."""
- node = astroid.extract_node(
- """
- import optparse
- optparse.Values.lala
- """
- )
- with self.assertNoMessages():
- self.checker.visit_attribute(node)
-
- @set_config(ignored_classes=("Values",))
- def test_ignored_classes_only_name(self) -> None:
- """Test that ignored_classes works with the name only."""
- node = astroid.extract_node(
- """
- import optparse
- optparse.Values.lala
- """
- )
- with self.assertNoMessages():
- self.checker.visit_attribute(node)
-
@set_config(suggestion_mode=False)
@needs_c_extension
def test_nomember_on_c_extension_error_msg(self) -> None:
diff --git a/tests/functional/n/no/no_member_imports.py b/tests/functional/n/no/no_member_imports.py
new file mode 100644
index 000000000..ead6d9335
--- /dev/null
+++ b/tests/functional/n/no/no_member_imports.py
@@ -0,0 +1,59 @@
+"""Tests for no-member on imported modules"""
+# pylint: disable=import-outside-toplevel, pointless-statement, missing-function-docstring
+# pylint: disable=deprecated-module
+
+
+def test_no_member_in_getattr():
+ """Make sure that a module attribute access is checked by pylint."""
+ import math
+
+ math.THIS_does_not_EXIST # [no-member]
+
+
+def test_no_member_in_getattr_ignored() -> None:
+ """Make sure that a module attribute access check is omitted with a
+ module that is configured to be ignored.
+ """
+ import argparse
+
+ argparse.THIS_does_not_EXIST
+
+
+def test_ignored_modules_invalid_pattern() -> None:
+ import xml
+
+ xml.etree.THIS_does_not_EXIST # [no-member]
+
+
+def test_ignored_modules_root_one_applies_as_well() -> None:
+ """Check that when a root module is completely ignored, submodules are skipped."""
+ import argparse
+
+ argparse.submodule.THIS_does_not_EXIST
+
+
+def test_ignored_modules_patterns() -> None:
+ import collections
+
+ collections.abc.THIS_does_not_EXIST
+
+
+def test_ignored_classes_no_recursive_pattern() -> None:
+ import sys
+
+ sys.THIS_does_not_EXIST # [no-member]
+
+
+def test_ignored_classes_qualified_name() -> None:
+ """Test that ignored-classes supports qualified name for ignoring."""
+
+ import optparse
+
+ optparse.Values.THIS_does_not_EXIST
+
+
+def test_ignored_classes_only_name() -> None:
+ """Test that ignored_classes works with the name only."""
+ import optparse
+
+ optparse.Option.THIS_does_not_EXIST
diff --git a/tests/functional/n/no/no_member_imports.rc b/tests/functional/n/no/no_member_imports.rc
new file mode 100644
index 000000000..59db427c2
--- /dev/null
+++ b/tests/functional/n/no/no_member_imports.rc
@@ -0,0 +1,3 @@
+[TYPECHECK]
+ignored-modules=argparse,xml.etree.,collections.abc*
+ignored-classes=sys*,optparse.Values,Option
diff --git a/tests/functional/n/no/no_member_imports.txt b/tests/functional/n/no/no_member_imports.txt
new file mode 100644
index 000000000..477558597
--- /dev/null
+++ b/tests/functional/n/no/no_member_imports.txt
@@ -0,0 +1,3 @@
+no-member:10:4:10:28:test_no_member_in_getattr:Module 'math' has no 'THIS_does_not_EXIST' member:INFERENCE
+no-member:25:4:25:33:test_ignored_modules_invalid_pattern:Module 'xml.etree' has no 'THIS_does_not_EXIST' member:INFERENCE
+no-member:44:4:44:27:test_ignored_classes_no_recursive_pattern:Module 'sys' has no 'THIS_does_not_EXIST' member:INFERENCE