summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDave Bunten <dave.bunten@cuanschutz.edu>2023-02-08 14:01:58 -0700
committerGitHub <noreply@github.com>2023-02-08 22:01:58 +0100
commit7fd499a903348955cbe120b058659f1fa6a29f1a (patch)
treeebe2a3f13ff25f2470b33be30b2c9f7d6cdf5f23 /tests
parent4fd7312952923448d1eeb32881bfe35fcda48b86 (diff)
downloadpylint-git-7fd499a903348955cbe120b058659f1fa6a29f1a.tar.gz
Add import-based submodule detection for preferred-modules (#8186)
Co-authored-by: Pierre Sassoulas <pierre.sassoulas@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/checkers/unittest_imports.py56
-rw-r--r--tests/regrtest_data/preferred_module/unpreferred_submodule.py3
2 files changed, 58 insertions, 1 deletions
diff --git a/tests/checkers/unittest_imports.py b/tests/checkers/unittest_imports.py
index 40aa8432a..8aa062cf4 100644
--- a/tests/checkers/unittest_imports.py
+++ b/tests/checkers/unittest_imports.py
@@ -123,7 +123,7 @@ class TestImportsChecker(CheckerTestCase):
# test preferred-modules case with base module import
Run(
[
- f"{os.path.join(REGR_DATA, 'preferred_module')}",
+ f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_module.py')}",
"-d all",
"-e preferred-module",
# prefer sys instead of os (for triggering test)
@@ -138,6 +138,60 @@ class TestImportsChecker(CheckerTestCase):
# assert there were no errors
assert len(errors) == 0
+ # test preferred-modules trigger case with submodules
+ Run(
+ [
+ f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_submodule.py')}",
+ "-d all",
+ "-e preferred-module",
+ # prefer os.path instead of pathlib (for triggering test)
+ "--preferred-modules=os.path:pathlib",
+ ],
+ exit=False,
+ )
+ output, errors = capsys.readouterr()
+
+ # assert that we saw preferred-modules triggered
+ assert "Prefer importing 'pathlib' instead of 'os.path'" in output
+ # assert there were no errors
+ assert len(errors) == 0
+
+ # test preferred-modules ignore case with submodules
+ Run(
+ [
+ f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_submodule.py')}",
+ "-d all",
+ "-e preferred-module",
+ # prefer pathlib instead of os.stat (for untriggered test)
+ "--preferred-modules=os.stat:pathlib",
+ ],
+ exit=False,
+ )
+ output, errors = capsys.readouterr()
+
+ # assert that we didn't see preferred-modules triggered
+ assert "Your code has been rated at 10.00/10" in output
+ # assert there were no errors
+ assert len(errors) == 0
+
+ # test preferred-modules base module for implemented submodule (from ... import)
+ Run(
+ [
+ f"{os.path.join(REGR_DATA, 'preferred_module/unpreferred_submodule.py')}",
+ "-d all",
+ "-e preferred-module",
+ # prefer pathlib instead of os (for triggering test)
+ "--preferred-modules=os:pathlib",
+ ],
+ exit=False,
+ )
+ output, errors = capsys.readouterr()
+
+ # assert that we saw preferred-modules triggered with base module
+ assert "Prefer importing 'pathlib' instead of 'os'" in output
+ # assert there were no errors
+ assert len(errors) == 0
+
@staticmethod
def test_allow_reexport_package(capsys: CaptureFixture[str]) -> None:
"""Test --allow-reexport-from-package option."""
diff --git a/tests/regrtest_data/preferred_module/unpreferred_submodule.py b/tests/regrtest_data/preferred_module/unpreferred_submodule.py
new file mode 100644
index 000000000..22c61ffbe
--- /dev/null
+++ b/tests/regrtest_data/preferred_module/unpreferred_submodule.py
@@ -0,0 +1,3 @@
+from os import path, getrandom
+
+path(".")